V8: include/v8-script.h Source File (original) (raw)
1
2
3
4
5#ifndef INCLUDE_V8_SCRIPT_H_
6#define INCLUDE_V8_SCRIPT_H_
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include
12#include
13#include
14
15#include "v8-callbacks.h"
16#include "v8-data.h"
18#include "v8-maybe.h"
20#include "v8-message.h"
21#include "v8config.h"
22
23namespace v8 {
24
25class Function;
26class Message;
27class Object;
28class PrimitiveArray;
29class Script;
30
31namespace internal {
32class BackgroundDeserializeTask;
33struct ScriptStreamingData;
34}
35
43 public:
49
55};
56
61 public:
66
69
78
84
90
91 static const int kNoScriptId = 0;
92};
93
98 public:
107};
108
113 public:
116
117 Location(int line_number, int column_number)
118 : line_number_(line_number), column_number_(column_number) {}
119
120 private:
121 int line_number_;
122 int column_number_;
123};
124
126 public:
131
136
142
157
160 return GetImportAttributes();
161 }
162
164
165 private:
166 static void CheckCast(Data* obj);
167};
168
173 public:
187 kErrored
189
196
201
206
211
217
222
229
236
247
257
269
276
284
291
299
306
311
316
317
318
319
320
321
322
323
326
338
348
358
360
361 private:
362 static void CheckCast(Data* obj);
363};
364
366 public:
371};
372
378 public:
385
394
399
405
411 std::vector<int> GetProducedCompileHints() const;
412
419};
420
422
427 public:
429
439
441 : data(nullptr),
442 length(0),
443 rejected(false),
444 buffer_policy(BufferNotOwned) {}
445
446
447
448
449
451 BufferPolicy buffer_policy = BufferNotOwned);
453
455
456
458 kMagicNumberMismatch = 1,
459 kVersionMismatch = 2,
460 kSourceMismatch = 3,
461 kFlagsMismatch = 5,
462 kChecksumMismatch = 6,
463 kInvalidHeader = 7,
464 kLengthMismatch = 8,
465 kReadOnlySnapshotChecksumMismatch = 9,
466
467
468 kLast = kReadOnlySnapshotChecksumMismatch
470
471
473
474
475
480
481
484 };
485
487
488 kNotAttempted,
489
490
491
492
493 kHit,
494
495
496 kMiss,
497
498
499
500 kPartial,
501 };
502
503
506 InMemoryCacheResult::kNotAttempted;
507
508 static constexpr int64_t kTimeNotMeasured = -1;
509 int64_t foreground_time_in_microseconds = kTimeNotMeasured;
510 int64_t background_time_in_microseconds = kTimeNotMeasured;
511 };
512
517 public:
518
519
523
530
531
532
533
535
537
539
540 private:
542
544
545
547 int resource_line_offset = -1;
548 int resource_column_offset = -1;
552
553
554
555
556 std::unique_ptr cached_data;
557 std::unique_ptr consume_cache_task;
558
559
561 void* compile_hint_callback_data = nullptr;
562
563
564
566 };
567
573 public:
575
598 };
599
607 public:
608 enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252 };
609
610 StreamedSource(std::unique_ptr source_stream,
613
614 internal::ScriptStreamingData* impl() const { return impl_.get(); }
615
616
619
621
622 private:
623 std::unique_ptrinternal::ScriptStreamingData impl_;
624
625
626
628 };
629
635 public:
637
638 private:
640
642 : data_(data) {}
643
644 internal::ScriptStreamingData* data_;
645 };
646
653 public:
655
657
673
680
687
688 private:
690
692 std::unique_ptrinternal::BackgroundDeserializeTask impl);
693
694 std::unique_ptrinternal::BackgroundDeserializeTask impl_;
695 };
696
698 kNoCompileOptions = 0,
699 kConsumeCodeCache = 1 << 0,
700 kEagerCompile = 1 << 1,
701 kProduceCompileHints = 1 << 2,
702 kConsumeCompileHints = 1 << 3,
703 kFollowCompileHintsMagicComment = 1 << 4,
704 kFollowCompileHintsPerFunctionMagicComment = 1 << 5,
705 };
706
708
709 if ((compile_options & kConsumeCodeCache) &&
710 compile_options != kConsumeCodeCache) {
711 return false;
712 }
713
714 if ((compile_options & kEagerCompile) && compile_options != kEagerCompile) {
715 return false;
716 }
717
718
719 constexpr int produce_and_consume = CompileOptions::kProduceCompileHints |
720 CompileOptions::kConsumeCompileHints;
721 if ((compile_options & produce_and_consume) == produce_and_consume) {
722 return false;
723 }
724 return true;
725 }
726
731 kNoCacheNoReason = 0,
747 };
748
766 NoCacheReason no_cache_reason = kNoCacheNoReason);
767
782 NoCacheReason no_cache_reason = kNoCacheNoReason);
783
797 ScriptType type = ScriptType::kClassic,
800 void* compile_hint_callback_data = nullptr);
801
803 Isolate* isolate, std::unique_ptr source);
805 Isolate* isolate, std::unique_ptr source);
806
817
837
848 NoCacheReason no_cache_reason = kNoCacheNoReason);
849
860
873 Local arguments[] = nullptr, size_t context_extension_count = 0,
876 NoCacheReason no_cache_reason = kNoCacheNoReason);
877
884
892
900
901 private:
905
908 Local arguments[], size_t context_extension_count,
912};
913
917 : source_string(string),
918 resource_name(origin.ResourceName()),
919 resource_line_offset(origin.LineOffset()),
920 resource_column_offset(origin.ColumnOffset()),
921 resource_options(origin.Options()),
922 source_map_url(origin.SourceMapUrl()),
923 host_defined_options(origin.GetHostDefinedOptions()),
924 cached_data(data),
925 consume_cache_task(consume_cache_task) {}
926
929 : source_string(string),
930 cached_data(data),
931 consume_cache_task(consume_cache_task) {}
932
935 void* callback_data)
936 : source_string(string),
937 resource_name(origin.ResourceName()),
938 resource_line_offset(origin.LineOffset()),
939 resource_column_offset(origin.ColumnOffset()),
940 resource_options(origin.Options()),
941 source_map_url(origin.SourceMapUrl()),
942 host_defined_options(origin.GetHostDefinedOptions()),
943 compile_hint_callback(callback),
944 compile_hint_callback_data(callback_data) {}
945
947 const {
948 return cached_data.get();
949}
950
952 return resource_options;
953}
954
957 return compilation_details;
958}
959
961#ifdef V8_ENABLE_CHECKS
962 CheckCast(data);
963#endif
965}
966
968#ifdef V8_ENABLE_CHECKS
969 CheckCast(data);
970#endif
971 return reinterpret_cast<Module*>(data);
972}
973
974}
975
976#endif
Definition: v8-script.h:365
std::vector< int > GetCompileHints(Isolate *isolate) const
Definition: v8-isolate.h:291
Definition: v8-local-handle.h:594
Definition: v8-local-handle.h:366
Definition: v8-script.h:112
int GetLineNumber()
Definition: v8-script.h:114
Location(int line_number, int column_number)
Definition: v8-script.h:117
int GetColumnNumber()
Definition: v8-script.h:115
Definition: v8-local-handle.h:734
Definition: v8-maybe.h:39
Definition: v8-memory-span.h:48
Definition: v8-script.h:125
static ModuleRequest * Cast(Data *data)
Definition: v8-script.h:960
Local< FixedArray > GetImportAttributes() const
Local< String > GetSpecifier() const
ModuleImportPhase GetPhase() const
int GetSourceOffset() const
Definition: v8-script.h:172
Local< Value > GetResourceName() const
Location SourceOffsetToLocation(int offset) const
MaybeLocal< Value > Evaluate(Local< Context > context)
Local< Value > GetModuleNamespace()
Maybe< bool > InstantiateModule(Local< Context > context, ResolveModuleByIndexCallback module_callback, ResolveSourceByIndexCallback source_callback=nullptr)
Maybe< bool > SetSyntheticModuleExport(Isolate *isolate, Local< String > export_name, Local< Value > export_value)
Local< FixedArray > GetModuleRequests() const
bool IsGraphAsync() const
bool HasTopLevelAwait() const
bool IsSyntheticModule() const
Local< Value > GetException() const
std::pair< LocalVector< Module >, LocalVector< Message > > GetStalledTopLevelAwaitMessages(Isolate *isolate)
Status
Definition: v8-script.h:181
@ kInstantiating
Definition: v8-script.h:183
@ kInstantiated
Definition: v8-script.h:184
@ kUninstantiated
Definition: v8-script.h:182
@ kEvaluating
Definition: v8-script.h:185
@ kEvaluated
Definition: v8-script.h:186
int GetIdentityHash() const
static Local< Module > CreateSyntheticModule(Isolate *isolate, Local< String > module_name, const MemorySpan< const Local< String > > &export_names, SyntheticModuleEvaluationSteps evaluation_steps)
Local< UnboundModuleScript > GetUnboundModuleScript()
static Module * Cast(Data *data)
Definition: v8-script.h:967
Maybe< bool > InstantiateModule(Local< Context > context, ResolveModuleCallback module_callback, ResolveSourceCallback source_callback=nullptr)
bool IsSourceTextModule() const
Definition: v8-script.h:652
void MergeWithExistingScript()
bool ShouldMergeWithExistingScript() const
void SourceTextAvailable(Isolate *isolate, Local< String > source_text, const ScriptOrigin &origin)
Definition: v8-script.h:572
virtual size_t GetMoreData(const uint8_t **src)=0
virtual ~ExternalSourceStream()=default
Definition: v8-script.h:634
Definition: v8-script.h:516
Source(Local< String > source_string, const ScriptOrigin &origin, CachedData *cached_data=nullptr, ConsumeCodeCacheTask *consume_cache_task=nullptr)
Definition: v8-script.h:914
const CompilationDetails & GetCompilationDetails() const
Definition: v8-script.h:956
const CachedData * GetCachedData() const
Definition: v8-script.h:946
const ScriptOriginOptions & GetResourceOptions() const
Definition: v8-script.h:951
Definition: v8-script.h:606
internal::ScriptStreamingData * impl() const
Definition: v8-script.h:614
Encoding
Definition: v8-script.h:608
CompilationDetails & compilation_details()
Definition: v8-script.h:620
StreamedSource & operator=(const StreamedSource &)=delete
StreamedSource(const StreamedSource &)=delete
StreamedSource(std::unique_ptr< ExternalSourceStream > source_stream, Encoding encoding)
Definition: v8-script.h:426
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:486
static bool CompileOptionsIsValid(CompileOptions compile_options)
Definition: v8-script.h:707
static CachedData * CreateCodeCache(Local< UnboundModuleScript > unbound_module_script)
NoCacheReason
Definition: v8-script.h:730
@ kNoCacheBecausePacScript
Definition: v8-script.h:742
@ kNoCacheBecauseV8Extension
Definition: v8-script.h:740
@ kNoCacheBecauseStreamingSource
Definition: v8-script.h:736
@ kNoCacheBecauseNoResource
Definition: v8-script.h:733
@ kNoCacheBecauseStaticCodeCache
Definition: v8-script.h:746
@ kNoCacheBecauseInspector
Definition: v8-script.h:737
@ kNoCacheBecauseCacheTooCold
Definition: v8-script.h:739
@ kNoCacheBecauseScriptTooSmall
Definition: v8-script.h:738
@ kNoCacheBecauseCachingDisabled
Definition: v8-script.h:732
@ kNoCacheBecauseDeferredProduceCodeCache
Definition: v8-script.h:745
@ kNoCacheBecauseExtensionModule
Definition: v8-script.h:741
@ kNoCacheBecauseInlineScript
Definition: v8-script.h:734
@ kNoCacheBecauseInDocumentWrite
Definition: v8-script.h:743
@ kNoCacheBecauseModule
Definition: v8-script.h:735
@ kNoCacheBecauseResourceWithNoCacheHandler
Definition: v8-script.h:744
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:697
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:377
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-script.h:97
Local< Value > GetSourceURL()
Local< Value > GetSourceMappingURL()
Definition: v8-script.h:60
int GetColumnNumber(int code_pos=0)
Local< Value > GetSourceMappingURL()
Local< Value > GetScriptName()
int GetLineNumber(int code_pos=0)
Local< Value > GetSourceURL()
Local< Script > BindToCurrentContext()
Definition: libplatform.h:15
bool(*)(int, void *) CompileHintCallback
Definition: v8-callbacks.h:431
ModuleImportPhase
Definition: v8-callbacks.h:348
ScriptType
Definition: v8-script.h:421
Definition: v8-script.h:437
BufferPolicy buffer_policy
Definition: v8-script.h:479
const uint8_t * data
Definition: v8-script.h:476
CachedData(const CachedData &)=delete
CompatibilityCheckResult
Definition: v8-script.h:454
bool rejected
Definition: v8-script.h:478
CachedData(const uint8_t *data, int length, BufferPolicy buffer_policy=BufferNotOwned)
BufferPolicy
Definition: v8-script.h:438
@ BufferNotOwned
Definition: v8-script.h:438
CachedData()
Definition: v8-script.h:440
int length
Definition: v8-script.h:477
CompatibilityCheckResult CompatibilityCheck(Isolate *isolate)
CachedData & operator=(const CachedData &)=delete
Definition: v8-script.h:504
#define V8_EXPORT
Definition: v8config.h:855
#define V8_INLINE
Definition: v8config.h:508
#define V8_DEPRECATE_SOON(message)
Definition: v8config.h:622
#define V8_DEPRECATED(message)
Definition: v8config.h:614
#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:679