blob: 5172201f7e81b636acc774e4f9d98ecb2c942daf [file] [log] [blame]
// Copyright 2019 the V8 project 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 "src/codegen/tick-counter.h"
#include "src/base/logging.h"
#include "src/base/macros.h"
#include "src/heap/local-heap.h"
namespace v8 {
namespace internal {
void TickCounter::TickAndMaybeEnterSafepoint() {
++ticks_;
// Magical number to detect performance bugs or compiler divergence.
// Selected as being roughly 10x of what's needed frequently.
constexpr size_t kMaxTicks = 100000000;
USE(kMaxTicks);
DCHECK_LT(ticks_, kMaxTicks);
if (local_heap_) local_heap_->Safepoint();
}
void TickCounter::AttachLocalHeap(LocalHeap* local_heap) {
DCHECK_NULL(local_heap_);
local_heap_ = local_heap;
DCHECK_NOT_NULL(local_heap_);
}
void TickCounter::DetachLocalHeap() { local_heap_ = nullptr; }
} // namespace internal
} // namespace v8