v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
circular-queue-inl.h
Go to the documentation of this file.
1
// Copyright 2011 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 V8_PROFILER_CIRCULAR_QUEUE_INL_H_
6
#define V8_PROFILER_CIRCULAR_QUEUE_INL_H_
7
8
#include "
src/profiler/circular-queue.h
"
9
// Include the non-inl header before the rest of the headers.
10
11
namespace
v8
{
12
namespace
internal
{
13
14
template
<
typename
T,
unsigned
L>
15
SamplingCircularQueue<T, L>::SamplingCircularQueue
()
16
: enqueue_pos_(
buffer_
),
17
dequeue_pos_(
buffer_
) {
18
}
19
20
template
<
typename
T,
unsigned
L>
21
SamplingCircularQueue<T, L>::~SamplingCircularQueue
() =
default
;
22
23
template
<
typename
T,
unsigned
L>
24
T*
SamplingCircularQueue<T, L>::Peek
() {
25
base::SeqCst_MemoryFence
();
26
if
(
base::Acquire_Load
(&dequeue_pos_->marker) ==
kFull
) {
27
return
&dequeue_pos_->record;
28
}
29
return
nullptr
;
30
}
31
32
33
template
<
typename
T,
unsigned
L>
34
void
SamplingCircularQueue<T, L>::Remove
() {
35
base::Release_Store
(&dequeue_pos_->marker, kEmpty);
36
dequeue_pos_ = Next(dequeue_pos_);
37
}
38
39
40
template
<
typename
T,
unsigned
L>
41
T*
SamplingCircularQueue<T, L>::StartEnqueue
() {
42
base::SeqCst_MemoryFence
();
43
if
(
base::Acquire_Load
(&enqueue_pos_->marker) == kEmpty) {
44
return
&enqueue_pos_->record;
45
}
46
return
nullptr
;
47
}
48
49
50
template
<
typename
T,
unsigned
L>
51
void
SamplingCircularQueue<T, L>::FinishEnqueue
() {
52
base::Release_Store
(&enqueue_pos_->marker,
kFull
);
53
enqueue_pos_ = Next(enqueue_pos_);
54
}
55
56
57
template
<
typename
T,
unsigned
L>
58
typename
SamplingCircularQueue<T, L>::Entry
*
SamplingCircularQueue<T, L>::Next
(
59
Entry
* entry) {
60
Entry
* next = entry + 1;
61
if
(next == &
buffer_
[
L
])
return
buffer_
;
62
return
next;
63
}
64
65
}
// namespace internal
66
}
// namespace v8
67
68
#endif
// V8_PROFILER_CIRCULAR_QUEUE_INL_H_
circular-queue.h
v8::internal::SamplingCircularQueue::SamplingCircularQueue
SamplingCircularQueue()
Definition
circular-queue-inl.h:15
v8::internal::SamplingCircularQueue::StartEnqueue
T * StartEnqueue()
Definition
circular-queue-inl.h:41
v8::internal::SamplingCircularQueue::Peek
T * Peek()
Definition
circular-queue-inl.h:24
v8::internal::SamplingCircularQueue::Next
Entry * Next(Entry *entry)
Definition
circular-queue-inl.h:58
v8::internal::SamplingCircularQueue::FinishEnqueue
void FinishEnqueue()
Definition
circular-queue-inl.h:51
v8::internal::SamplingCircularQueue::Remove
void Remove()
Definition
circular-queue-inl.h:34
v8::internal::SamplingCircularQueue::~SamplingCircularQueue
~SamplingCircularQueue()
buffer_
base::OwnedVector< uint8_t > buffer_
Definition
assembler.cc:111
v8::base::Acquire_Load
Atomic8 Acquire_Load(volatile const Atomic8 *ptr)
Definition
atomicops.h:249
v8::base::SeqCst_MemoryFence
void SeqCst_MemoryFence()
Definition
atomicops.h:91
v8::base::Release_Store
void Release_Store(volatile Atomic8 *ptr, Atomic8 value)
Definition
atomicops.h:204
v8::internal::internal
internal
Definition
wasm-objects-inl.h:458
v8::internal::StoreToObjectWriteBarrier::kFull
@ kFull
v8::internal::L
constexpr int L
Definition
constants-arm.h:174
v8
Definition
api-arguments-inl.h:19
v8::internal::SamplingCircularQueue::Entry
Definition
circular-queue.h:51
src
profiler
circular-queue-inl.h
Generated on Sun Apr 6 2025 21:08:56 for v8 by
1.12.0