33 isolate_->PrintWithTimestamp(
"Removed %zu pages from the shared pool.\n",
50 DCHECK(!it->second.empty());
51 shared_pool_.push_back(std::make_pair(std::move(it->second),
id));
57 auto schedule_task = [
this,
isolate, id](
Isolate* target_isolate) {
62 target_isolate->task_runner()->PostDelayedTask(
63 std::make_unique<ReleasePooledChunksTask>(target_isolate,
this,
id),
67 if (!isolate->isolate_group()->FindAnotherIsolateLocked(isolate,
71 for (
auto* page : entry.first) {
81 std::vector<MutablePageMetadata*> pages_to_free;
88 DCHECK(!it->second.empty());
89 pages_to_free = std::move(it->second);
103 for (
auto* page : entry.first) {
111 std::vector<std::vector<MutablePageMetadata*>> groups_to_free;
115 std::erase_if(
shared_pool_, [&groups_to_free,
id](
auto entry) {
116 if (entry.second <=
id) {
117 groups_to_free.push_back(std::move(entry.first));
127 for (
const auto& group : groups_to_free) {
128 for (
auto* page : group) {
141 return it->second.size();
152 count += entry.first.size();
163 count += entry.first.size();
167 count += entry.second.size();
209 std::vector<MutablePageMetadata*>& pages = it->second;
static constexpr TimeDelta FromSeconds(int64_t seconds)
double InSecondsF() const
static void DeleteMemoryChunk(MutablePageMetadata *metadata)
Executability executable() const
static const int kPageSize
void ReleaseAllAllocatedMemory()
std::vector< std::pair< std::vector< MutablePageMetadata * >, size_t > > shared_pool_
V8_EXPORT_PRIVATE void ReleaseImmediately(Isolate *isolate)
void ReleaseOnTearDown(Isolate *isolate)
size_t GetSharedCount() const
size_t GetCount(Isolate *isolate) const
MutablePageMetadata * Remove(Isolate *isolate)
size_t GetTotalCount() const
void Add(Isolate *isolate, MutablePageMetadata *chunk)
absl::flat_hash_map< Isolate *, std::vector< MutablePageMetadata * > > local_pools
size_t ReleaseUpTo(size_t id)
ReleasePooledChunksTask(Isolate *isolate, PagePool *pool, size_t id)
~ReleasePooledChunksTask() override=default
void RunInternal() override
ReleasePooledChunksTask(const ReleasePooledChunksTask &)=delete
ReleasePooledChunksTask & operator=(const ReleasePooledChunksTask &)=delete
ZoneVector< RpoNumber > & result
V8_EXPORT_PRIVATE FlagValues v8_flags
#define DCHECK_NOT_NULL(val)
#define DCHECK_NE(v1, v2)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)