tick-counter.cc 932 Bytes
Newer Older
1 2 3 4 5 6 7 8
// 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"
9
#include "src/heap/local-heap.h"
10 11 12 13

namespace v8 {
namespace internal {

14
void TickCounter::TickAndMaybeEnterSafepoint() {
15 16 17 18 19 20
  ++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);
21 22 23 24 25 26 27 28

  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_);
29 30
}

31 32
void TickCounter::DetachLocalHeap() { local_heap_ = nullptr; }

33 34
}  // namespace internal
}  // namespace v8