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