// Copyright 2020 The PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "testing/fuzzers/xfa_process_state.h"

#include "fxjs/gc/heap.h"

XFAProcessState::XFAProcessState(v8::Platform* platform, v8::Isolate* isolate)
    : platform_(platform), isolate_(isolate), heap_(FXGC_CreateHeap()) {}

XFAProcessState::~XFAProcessState() {
  FXGC_ForceGarbageCollection(heap_.get());
}

cppgc::Heap* XFAProcessState::GetHeap() const {
  return heap_.get();
}

void XFAProcessState::ForceGCAndPump() {
  FXGC_ForceGarbageCollection(heap_.get());
  while (v8::platform::PumpMessageLoop(platform_, isolate_))
    continue;
}
