v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
module-compiler.cc File Reference
Include dependency graph for module-compiler.cc:

Go to the source code of this file.

Classes

class  v8::internal::wasm::TransitiveTypeFeedbackProcessor
 
class  v8::internal::wasm::FeedbackMaker
 
struct  v8::internal::wasm::ValidateFunctionsStreamingJobData
 
struct  v8::internal::wasm::ValidateFunctionsStreamingJobData::Unit
 
class  v8::internal::wasm::ValidateFunctionsStreamingJob
 
class  v8::internal::wasm::AsyncStreamingProcessor
 
class  v8::internal::wasm::AsyncCompileJob::CompilationStateCallback
 
class  v8::internal::wasm::AsyncCompileJob::CompileStep
 
class  v8::internal::wasm::AsyncCompileJob::CompileTask
 
class  v8::internal::wasm::AsyncCompileJob::DecodeModule
 
class  v8::internal::wasm::AsyncCompileJob::PrepareAndStartCompile
 
class  v8::internal::wasm::AsyncCompileJob::FinishCompilation
 
class  v8::internal::wasm::AsyncCompileJob::Fail
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::wasm
 

Macros

#define TRACE_COMPILE(...)
 
#define TRACE_STREAMING(...)
 
#define TRACE_LAZY(...)
 
#define CHECK_USE_COUNTER(feat, ...)
 
#define RETURN_ERROR(module_name_string, import_name)
 
#define CHECK_SIG(import_name, kSigName, kEnumName)
 

Functions

bool v8::internal::wasm::CompileLazy (Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data, int func_index)
 
void v8::internal::wasm::ThrowLazyCompilationError (Isolate *isolate, const NativeModule *native_module, int func_index)
 
bool v8::internal::wasm::IsCrossInstanceCall (Tagged< Object > obj, Isolate *const isolate)
 
void v8::internal::wasm::TriggerTierUp (Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data, int func_index)
 
void v8::internal::wasm::TierUpNowForTesting (Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data, int func_index)
 
void v8::internal::wasm::TierUpAllForTesting (Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data)
 
void v8::internal::wasm::InitializeCompilationForTesting (NativeModule *native_module)
 
void v8::internal::wasm::PublishDetectedFeatures (WasmDetectedFeatures detected_features, Isolate *isolate, bool is_initial_compilation)
 
WasmError v8::internal::wasm::ValidateAndSetBuiltinImports (const WasmModule *module, base::Vector< const uint8_t > wire_bytes, const CompileTimeImports &imports, WasmDetectedFeatures *detected)
 
std::shared_ptr< NativeModulev8::internal::wasm::CompileToNativeModule (Isolate *isolate, WasmEnabledFeatures enabled_features, WasmDetectedFeatures detected_features, CompileTimeImports compile_imports, ErrorThrower *thrower, std::shared_ptr< const WasmModule > module, base::OwnedVector< const uint8_t > wire_bytes, int compilation_id, v8::metrics::Recorder::ContextId context_id, ProfileInformation *pgo_info)
 
WasmCodev8::internal::wasm::CompileImportWrapperForTest (Isolate *isolate, NativeModule *native_module, ImportCallKind kind, const CanonicalSig *sig, CanonicalTypeIndex type_index, int expected_arity, Suspend suspend)
 

Macro Definition Documentation

◆ CHECK_SIG

#define CHECK_SIG ( import_name,
kSigName,
kEnumName )
Value:
if (name == base::StaticOneByteVector(#import_name)) { \
if (*sig != kSigName) { \
RETURN_ERROR("js-string", #import_name); \
} \
status = WellKnownImport::kEnumName; \
detected->add_imported_strings(); \
} else

◆ CHECK_USE_COUNTER

#define CHECK_USE_COUNTER ( feat,
... )
Value:
static_assert(check_use_counter(WasmDetectedFeature::feat));

◆ RETURN_ERROR

#define RETURN_ERROR ( module_name_string,
import_name )
Value:
uint32_t error_offset = \
ImportStartOffset(wire_bytes, import.module_name.offset()); \
return WasmError(error_offset, \
"Imported builtin function \"wasm:" module_name_string \
"\" \"" import_name "\" has incorrect signature")

◆ TRACE_COMPILE

#define TRACE_COMPILE ( ...)
Value:
do { \
if (v8_flags.trace_wasm_compiler) PrintF(__VA_ARGS__); \
} while (false)

Definition at line 43 of file module-compiler.cc.

◆ TRACE_LAZY

#define TRACE_LAZY ( ...)
Value:
do { \
if (v8_flags.trace_wasm_lazy_compilation) PrintF(__VA_ARGS__); \
} while (false)

Definition at line 53 of file module-compiler.cc.

◆ TRACE_STREAMING

#define TRACE_STREAMING ( ...)
Value:
do { \
if (v8_flags.trace_wasm_streaming) PrintF(__VA_ARGS__); \
} while (false)

Definition at line 48 of file module-compiler.cc.

Variable Documentation

◆ async_counters_

const std::shared_ptr<Counters> async_counters_
private

Definition at line 747 of file module-compiler.cc.

◆ baseline_compile_job_

std::unique_ptr<JobHandle> baseline_compile_job_
private

Definition at line 765 of file module-compiler.cc.

◆ baseline_tier

ExecutionTier baseline_tier

Definition at line 1024 of file module-compiler.cc.

◆ baseline_units_

std::vector<WasmCompilationUnit> baseline_units_
private

Definition at line 1125 of file module-compiler.cc.

◆ big_units_queue_

BigUnitsQueue big_units_queue_
private

Definition at line 522 of file module-compiler.cc.

◆ bytes_since_last_chunk_

size_t bytes_since_last_chunk_ = 0
private

Definition at line 804 of file module-compiler.cc.

◆ callbacks_

std::vector<std::unique_ptr<CompilationEventCallback> > callbacks_
private

Definition at line 796 of file module-compiler.cc.

◆ callbacks_mutex_

base::Mutex callbacks_mutex_
mutableprivate

Definition at line 790 of file module-compiler.cc.

◆ compilation_id_

int compilation_id_ = kInvalidCompilationID
private

Definition at line 770 of file module-compiler.cc.

◆ compilation_progress_

std::vector<uint8_t> compilation_progress_
private

Definition at line 805 of file module-compiler.cc.

◆ compilation_unit_queues_

CompilationUnitQueues compilation_unit_queues_
private

Definition at line 757 of file module-compiler.cc.

◆ compile_cancelled_

std::atomic<bool> compile_cancelled_ {false}
private

Definition at line 755 of file module-compiler.cc.

◆ compile_failed_

std::atomic<bool> compile_failed_ {false}
private

Definition at line 751 of file module-compiler.cc.

◆ compile_mode_

const CompileMode compile_mode_
private

Definition at line 2244 of file module-compiler.cc.

◆ context_id_

v8::metrics::Recorder::ContextId context_id_
private

Definition at line 2242 of file module-compiler.cc.

◆ counters_

Counters* counters_
private

Definition at line 1172 of file module-compiler.cc.

◆ detected_features_

std::atomic<WasmDetectedFeatures> detected_features_
private

Definition at line 774 of file module-compiler.cc.

◆ engine_barrier_

std::shared_ptr<OperationsBarrier> engine_barrier_
private

Definition at line 2368 of file module-compiler.cc.

◆ finished_events_

base::EnumSet<CompilationEvent> finished_events_
private

Definition at line 799 of file module-compiler.cc.

◆ func_size

size_t func_size

Definition at line 286 of file module-compiler.cc.

◆ has_units

std::atomic<bool> has_units[CompilationTier::kNumTiers]

Definition at line 317 of file module-compiler.cc.

◆ kBigUnitsLimit

size_t kBigUnitsLimit = 4096
staticconstexprprivate

Definition at line 280 of file module-compiler.cc.

◆ kInvalidCompilationID

int kInvalidCompilationID = -1
staticconstexprprivate

Definition at line 769 of file module-compiler.cc.

◆ last_top_tier_compilation_timestamp_

base::TimeTicks last_top_tier_compilation_timestamp_
private

Definition at line 811 of file module-compiler.cc.

◆ metrics_recorder_

std::shared_ptr<metrics::Recorder> metrics_recorder_
private

Definition at line 2241 of file module-compiler.cc.

◆ mutex

base::Mutex mutex
mutable

Definition at line 314 of file module-compiler.cc.

◆ mutex_

base::Mutex mutex_
mutableprivate

Definition at line 761 of file module-compiler.cc.

◆ native_module_

const std::weak_ptr<NativeModule> native_module_
private

Definition at line 100 of file module-compiler.cc.

◆ native_module_weak_

std::weak_ptr<NativeModule> const native_module_weak_
private

Definition at line 746 of file module-compiler.cc.

◆ next_queue_to_add

std::atomic<int> next_queue_to_add {0}
private

Definition at line 527 of file module-compiler.cc.

◆ next_steal_task_id

int next_steal_task_id

Definition at line 338 of file module-compiler.cc.

◆ num_declared_functions_

const int num_declared_functions_
private

Definition at line 520 of file module-compiler.cc.

◆ num_imported_functions_

const int num_imported_functions_
private

Definition at line 519 of file module-compiler.cc.

◆ num_priority_units_

std::atomic<size_t> num_priority_units_ {0}
private

Definition at line 525 of file module-compiler.cc.

◆ num_units_

std::atomic<size_t> num_units_[CompilationTier::kNumTiers]
private

Definition at line 524 of file module-compiler.cc.

◆ outstanding_baseline_units_

int outstanding_baseline_units_ = 0
private

Definition at line 801 of file module-compiler.cc.

◆ priority

size_t priority

Definition at line 298 of file module-compiler.cc.

◆ publish_limit

std::atomic<int> publish_limit {kMaxInt}

Definition at line 331 of file module-compiler.cc.

◆ publish_queue_

std::vector<UnpublishedWasmCode> publish_queue_

Definition at line 819 of file module-compiler.cc.

◆ publish_state_

PublishState publish_state_[CompilationTier::kNumTiers]
private

Definition at line 822 of file module-compiler.cc.

◆ publisher_running_

bool publisher_running_ = false

Definition at line 820 of file module-compiler.cc.

◆ queues_

std::vector<std::unique_ptr<QueueImpl> > queues_
private

Definition at line 517 of file module-compiler.cc.

◆ queues_mutex_

base::Mutex queues_mutex_
mutableprivate

Definition at line 516 of file module-compiler.cc.

◆ start_time_

base::TimeTicks start_time_
private

Definition at line 2239 of file module-compiler.cc.

◆ tier_

const CompilationTier tier_
private

Definition at line 2370 of file module-compiler.cc.

◆ tiering_units_

std::vector<WasmCompilationUnit> tiering_units_
private

Definition at line 1126 of file module-compiler.cc.

◆ timer_

base::ElapsedTimer timer_
private

Definition at line 1174 of file module-compiler.cc.

◆ top_tier

ExecutionTier top_tier

Definition at line 1025 of file module-compiler.cc.

◆ top_tier_compile_job_

std::unique_ptr<JobHandle> top_tier_compile_job_
private

Definition at line 766 of file module-compiler.cc.

◆ top_tier_compiled_

std::unique_ptr<std::atomic<bool>[]> top_tier_compiled_
private

Definition at line 526 of file module-compiler.cc.

◆ top_tier_priority_units

std::priority_queue<TopTierPriorityUnit> top_tier_priority_units

Definition at line 337 of file module-compiler.cc.

◆ unit

WasmCompilationUnit unit

Definition at line 287 of file module-compiler.cc.

◆ units

std::vector<WasmCompilationUnit> units[CompilationTier::kNumTiers]

Definition at line 320 of file module-compiler.cc.

◆ wire_bytes_storage_

std::shared_ptr<WireBytesStorage> wire_bytes_storage_
private

Definition at line 782 of file module-compiler.cc.