Loading...
Searching...
No Matches
platform.h
Go to the documentation of this file.
1// Copyright 2020 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_CPPGC_PLATFORM_H_
6#define INCLUDE_CPPGC_PLATFORM_H_
7
8#include <memory>
9
11#include "v8-platform.h" // NOLINT(build/include_directory)
12#include "v8config.h" // NOLINT(build/include_directory)
13
14namespace cppgc {
15
16// TODO(v8:10346): Create separate includes for concepts that are not
17// V8-specific.
23using Task = v8::Task;
27
35 public:
36 virtual ~AllocationSampler() = default;
37
45 virtual size_t GetSampleInterval() const { return 0; }
46
57 virtual bool OnAllocated(void* address, size_t size) = 0;
58
66 virtual void OnFreed(void* address) = 0;
67
79 virtual bool OnMove(void* from, void* to, size_t size) = 0;
80};
81
86 public:
87 virtual ~Platform() = default;
88
95
103 virtual double MonotonicallyIncreasingTime() = 0;
104
108 virtual std::shared_ptr<TaskRunner> GetForegroundTaskRunner() {
109 return GetForegroundTaskRunner(TaskPriority::kUserBlocking);
110 }
111
116 virtual std::shared_ptr<TaskRunner> GetForegroundTaskRunner(
117 TaskPriority priority) {
118 return nullptr;
119 }
120
180 virtual std::unique_ptr<JobHandle> PostJob(
181 TaskPriority priority, std::unique_ptr<JobTask> job_task) {
182 return nullptr;
183 }
184
191};
192
194
209V8_EXPORT void InitializeProcess(PageAllocator* page_allocator = nullptr,
210 size_t desired_heap_size = 0);
211
218
219namespace internal {
220
221V8_EXPORT void Fatal(const std::string& reason = std::string(),
223
224} // namespace internal
225
226} // namespace cppgc
227
228#endif // INCLUDE_CPPGC_PLATFORM_H_
Definition: platform.h:34
virtual bool OnMove(void *from, void *to, size_t size)=0
virtual size_t GetSampleInterval() const
Definition: platform.h:45
virtual bool OnAllocated(void *address, size_t size)=0
virtual ~AllocationSampler()=default
virtual void OnFreed(void *address)=0
Definition: platform.h:85
virtual std::shared_ptr< TaskRunner > GetForegroundTaskRunner(TaskPriority priority)
Definition: platform.h:116
virtual TracingController * GetTracingController()
virtual ~Platform()=default
virtual std::shared_ptr< TaskRunner > GetForegroundTaskRunner()
Definition: platform.h:108
virtual PageAllocator * GetPageAllocator()=0
virtual double MonotonicallyIncreasingTime()=0
virtual std::unique_ptr< JobHandle > PostJob(TaskPriority priority, std::unique_ptr< JobTask > job_task)
Definition: platform.h:180
Definition: v8-platform.h:63
Definition: v8-platform.h:214
Definition: v8-platform.h:249
Definition: v8-platform.h:308
Definition: v8-platform.h:557
Definition: v8-source-location.h:22
static constexpr SourceLocation Current(const std::source_location &loc=std::source_location::current())
Definition: v8-source-location.h:28
Definition: v8-platform.h:75
Definition: v8-platform.h:50
Definition: v8-platform.h:406
void Fatal(const std::string &reason=std::string(), SourceLocation=SourceLocation::Current())
Definition: allocation.h:39
bool IsInitialized()
void ShutdownProcess()
void InitializeProcess(PageAllocator *page_allocator=nullptr, size_t desired_heap_size=0)
TaskPriority
Definition: v8-platform.h:25
#define V8_EXPORT
Definition: v8config.h:874