Loading...
Searching...
No Matches
v8-script.h
Go to the documentation of this file.
1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
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 <memory>
12#include <tuple>
13#include <vector>
14
15#include "v8-callbacks.h" // NOLINT(build/include_directory)
16#include "v8-data.h" // NOLINT(build/include_directory)
17#include "v8-local-handle.h" // NOLINT(build/include_directory)
18#include "v8-maybe.h" // NOLINT(build/include_directory)
19#include "v8-memory-span.h" // NOLINT(build/include_directory)
20#include "v8-message.h" // NOLINT(build/include_directory)
21#include "v8config.h" // NOLINT(build/include_directory)
22
23namespace v8 {
24
25class Function;
26class Message;
27class Object;
28class PrimitiveArray;
29class Script;
30
31namespace internal {
32class BackgroundDeserializeTask;
33struct ScriptStreamingData;
34} // namespace internal
35
43 public:
49
55};
56
61 public:
66
67 int GetId() const;
69
78
83 int GetLineNumber(int code_pos = 0);
84
89 int GetColumnNumber(int code_pos = 0);
90
91 static const int kNoScriptId = 0;
92};
93
98 public:
107};
108
113 public:
114 int GetLineNumber() { return line_number_; }
115 int GetColumnNumber() { return column_number_; }
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
141 int GetSourceOffset() const;
142
157
158 V8_DEPRECATED("Use GetImportAttributes instead")
159 Local<FixedArray> GetImportAssertions() const {
160 return GetImportAttributes();
161 }
162
163 V8_INLINE static ModuleRequest* Cast(Data* data);
164
165 private:
166 static void CheckCast(Data* obj);
167};
168
172class V8_EXPORT Module : public Data {
173 public:
181 enum Status {
187 kErrored
188 };
189
196
201
206
211
217
221 int GetIdentityHash() const;
222
224 Local<Context> context, Local<String> specifier,
225 Local<FixedArray> import_attributes, Local<Module> referrer);
227 Local<Context> context, Local<String> specifier,
228 Local<FixedArray> import_attributes, Local<Module> referrer);
229
231 Local<Context> context, size_t module_request_index,
232 Local<Module> referrer);
234 Local<Context> context, size_t module_request_index,
235 Local<Module> referrer);
236
245 Local<Context> context, ResolveModuleCallback module_callback,
246 ResolveSourceCallback source_callback = nullptr);
247
255 Local<Context> context, ResolveModuleByIndexCallback module_callback,
256 ResolveSourceByIndexCallback source_callback = nullptr);
257
269
276
284
290 int ScriptId() const;
291
298 bool IsGraphAsync() const;
299
305 bool HasTopLevelAwait() const;
306
310 bool IsSourceTextModule() const;
311
315 bool IsSyntheticModule() const;
316
317 /*
318 * Callback defined in the embedder. This is responsible for setting
319 * the module's exported values with calls to SetSyntheticModuleExport().
320 * The callback must return a resolved Promise to indicate success (where no
321 * exception was thrown) and return an empy MaybeLocal to indicate falure
322 * (where an exception was thrown).
323 */
326
335 Isolate* isolate, Local<String> module_name,
336 const MemorySpan<const Local<String>>& export_names,
337 SyntheticModuleEvaluationSteps evaluation_steps);
338
347 Isolate* isolate, Local<String> export_name, Local<Value> export_value);
348
356 std::pair<LocalVector<Module>, LocalVector<Message>>
358
359 V8_INLINE static Module* Cast(Data* data);
360
361 private:
362 static void CheckCast(Data* obj);
363};
364
366 public:
370 std::vector<int> GetCompileHints(Isolate* isolate) const;
371};
372
377class V8_EXPORT Script : public Data {
378 public:
383 Local<Context> context, Local<String> source,
384 ScriptOrigin* origin = nullptr);
385
393 Local<Data> host_defined_options);
394
399
405
410 V8_DEPRECATE_SOON("Use GetCompileHintsCollector instead")
411 std::vector<int> GetProducedCompileHints() const;
412
418 Local<CompileHintsCollector> GetCompileHintsCollector() const;
419};
420
422
427 public:
429
438 enum BufferPolicy { BufferNotOwned, BufferOwned };
439
441 : data(nullptr),
442 length(0),
443 rejected(false),
444 buffer_policy(BufferNotOwned) {}
445
446 // If buffer_policy is BufferNotOwned, the caller keeps the ownership of
447 // data and guarantees that it stays alive until the CachedData object is
448 // destroyed. If the policy is BufferOwned, the given data will be deleted
449 // (with delete[]) when the CachedData object is destroyed.
450 CachedData(const uint8_t* data, int length,
451 BufferPolicy buffer_policy = BufferNotOwned);
453
455 // Don't change order/existing values of this enum since it keys into the
456 // `code_cache_reject_reason` histogram. Append-only!
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 // This should always point at the last real enum value.
468 kLast = kReadOnlySnapshotChecksumMismatch
469 };
470
471 // Check if the CachedData can be loaded in the given isolate.
473
474 // TODO(marja): Async compilation; add constructors which take a callback
475 // which will be called when V8 no longer needs the data.
476 const uint8_t* data;
480
481 // Prevent copying.
482 CachedData(const CachedData&) = delete;
483 CachedData& operator=(const CachedData&) = delete;
484 };
485
487 // V8 did not attempt to find this script in its in-memory cache.
488 kNotAttempted,
489
490 // V8 found a previously compiled copy of this script in its in-memory
491 // cache. Any data generated by a streaming compilation or background
492 // deserialization was abandoned.
493 kHit,
494
495 // V8 didn't have any previously compiled data for this script.
496 kMiss,
497
498 // V8 had some previously compiled data for an identical script, but the
499 // data was incomplete.
500 kPartial,
501 };
502
503 // Details about what happened during a compilation.
505 InMemoryCacheResult in_memory_cache_result =
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
516 class Source {
517 public:
518 // Source takes ownership of both CachedData and CodeCacheConsumeTask.
519 // The caller *must* ensure that the cached data is from a trusted source.
520 V8_INLINE Source(Local<String> source_string, const ScriptOrigin& origin,
521 CachedData* cached_data = nullptr,
522 ConsumeCodeCacheTask* consume_cache_task = nullptr);
523 // Source takes ownership of both CachedData and CodeCacheConsumeTask.
524 V8_INLINE explicit Source(
525 Local<String> source_string, CachedData* cached_data = nullptr,
526 ConsumeCodeCacheTask* consume_cache_task = nullptr);
527 V8_INLINE Source(Local<String> source_string, const ScriptOrigin& origin,
528 CompileHintCallback callback, void* callback_data);
529 V8_INLINE ~Source() = default;
530
531 // Ownership of the CachedData or its buffers is *not* transferred to the
532 // caller. The CachedData object is alive as long as the Source object is
533 // alive.
534 V8_INLINE const CachedData* GetCachedData() const;
535
536 V8_INLINE const ScriptOriginOptions& GetResourceOptions() const;
537
538 V8_INLINE const CompilationDetails& GetCompilationDetails() const;
539
540 private:
541 friend class ScriptCompiler;
542
543 Local<String> source_string;
544
545 // Origin information
546 Local<Value> resource_name;
547 int resource_line_offset = -1;
548 int resource_column_offset = -1;
549 ScriptOriginOptions resource_options;
550 Local<Value> source_map_url;
551 Local<Data> host_defined_options;
552
553 // Cached data from previous compilation (if a kConsume*Cache flag is
554 // set), or hold newly generated cache data (kProduce*Cache flags) are
555 // set when calling a compile method.
556 std::unique_ptr<CachedData> cached_data;
557 std::unique_ptr<ConsumeCodeCacheTask> consume_cache_task;
558
559 // For requesting compile hints from the embedder.
560 CompileHintCallback compile_hint_callback = nullptr;
561 void* compile_hint_callback_data = nullptr;
562
563 // V8 writes this data and never reads it. It exists only to be informative
564 // to the embedder.
565 CompilationDetails compilation_details;
566 };
567
573 public:
574 virtual ~ExternalSourceStream() = default;
575
597 virtual size_t GetMoreData(const uint8_t** src) = 0;
598 };
599
607 public:
608 enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252 };
609
610 StreamedSource(std::unique_ptr<ExternalSourceStream> source_stream,
611 Encoding encoding);
613
614 internal::ScriptStreamingData* impl() const { return impl_.get(); }
615
616 // Prevent copying.
619
620 CompilationDetails& compilation_details() { return compilation_details_; }
621
622 private:
623 std::unique_ptr<internal::ScriptStreamingData> impl_;
624
625 // V8 writes this data and never reads it. It exists only to be informative
626 // to the embedder.
627 CompilationDetails compilation_details_;
628 };
629
635 public:
636 void Run();
637
638 private:
639 friend class ScriptCompiler;
640
641 explicit ScriptStreamingTask(internal::ScriptStreamingData* data)
642 : data_(data) {}
643
644 internal::ScriptStreamingData* data_;
645 };
646
653 public:
655
656 void Run();
657
671 void SourceTextAvailable(Isolate* isolate, Local<String> source_text,
672 const ScriptOrigin& origin);
673
680
687
688 private:
689 friend class ScriptCompiler;
690
691 explicit ConsumeCodeCacheTask(
692 std::unique_ptr<internal::BackgroundDeserializeTask> impl);
693
694 std::unique_ptr<internal::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
707 static inline bool CompileOptionsIsValid(CompileOptions compile_options) {
708 // kConsumeCodeCache is mutually exclusive with all other flag bits.
709 if ((compile_options & kConsumeCodeCache) &&
710 compile_options != kConsumeCodeCache) {
711 return false;
712 }
713 // kEagerCompile is mutually exclusive with all other flag bits.
714 if ((compile_options & kEagerCompile) && compile_options != kEagerCompile) {
715 return false;
716 }
717 // We don't currently support producing and consuming compile hints at the
718 // same time.
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
764 Isolate* isolate, Source* source,
765 CompileOptions options = kNoCompileOptions,
766 NoCacheReason no_cache_reason = kNoCacheNoReason);
767
780 Local<Context> context, Source* source,
781 CompileOptions options = kNoCompileOptions,
782 NoCacheReason no_cache_reason = kNoCacheNoReason);
783
796 Isolate* isolate, StreamedSource* source,
797 ScriptType type = ScriptType::kClassic,
798 CompileOptions options = kNoCompileOptions,
799 CompileHintCallback compile_hint_callback = nullptr,
800 void* compile_hint_callback_data = nullptr);
801
803 Isolate* isolate, std::unique_ptr<CachedData> source);
805 Isolate* isolate, std::unique_ptr<CachedData> source);
806
815 Local<Context> context, StreamedSource* source,
816 Local<String> full_source_string, const ScriptOrigin& origin);
817
836 static uint32_t CachedDataVersionTag();
837
846 Isolate* isolate, Source* source,
847 CompileOptions options = kNoCompileOptions,
848 NoCacheReason no_cache_reason = kNoCacheNoReason);
849
858 Local<Context> context, StreamedSource* v8_source,
859 Local<String> full_source_string, const ScriptOrigin& origin);
860
872 Local<Context> context, Source* source, size_t arguments_count = 0,
873 Local<String> arguments[] = nullptr, size_t context_extension_count = 0,
874 Local<Object> context_extensions[] = nullptr,
875 CompileOptions options = kNoCompileOptions,
876 NoCacheReason no_cache_reason = kNoCacheNoReason);
877
884
891 Local<UnboundModuleScript> unbound_module_script);
892
900
901 private:
902 static V8_WARN_UNUSED_RESULT MaybeLocal<UnboundScript> CompileUnboundInternal(
903 Isolate* isolate, Source* source, CompileOptions options,
904 NoCacheReason no_cache_reason);
905
906 static V8_WARN_UNUSED_RESULT MaybeLocal<Function> CompileFunctionInternal(
907 Local<Context> context, Source* source, size_t arguments_count,
908 Local<String> arguments[], size_t context_extension_count,
909 Local<Object> context_extensions[], CompileOptions options,
910 NoCacheReason no_cache_reason,
911 Local<ScriptOrModule>* script_or_module_out);
912};
913
914ScriptCompiler::Source::Source(Local<String> string, const ScriptOrigin& origin,
915 CachedData* data,
916 ConsumeCodeCacheTask* consume_cache_task)
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
928 ConsumeCodeCacheTask* consume_cache_task)
929 : source_string(string),
930 cached_data(data),
931 consume_cache_task(consume_cache_task) {}
932
934 CompileHintCallback callback,
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
964 return reinterpret_cast<ModuleRequest*>(data);
965}
966
968#ifdef V8_ENABLE_CHECKS
969 CheckCast(data);
970#endif
971 return reinterpret_cast<Module*>(data);
972}
973
974} // namespace v8
975
976#endif // INCLUDE_V8_SCRIPT_H_
Definition: v8-script.h:365
std::vector< int > GetCompileHints(Isolate *isolate) const
Definition: v8-data.h:18
Definition: v8-data.h:77
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
int ScriptId() const
Status GetStatus() 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 SourceTextAvailable(Isolate *isolate, Local< String > source_text, const ScriptOrigin &origin)
Definition: v8-script.h:572
virtual size_t GetMoreData(const uint8_t **src)=0
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()
int GetId() const
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