v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
embedder-state.cc
Go to the documentation of this file.
1
// Copyright 2021 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
#include "
src/execution/embedder-state.h
"
6
7
#include "
src/api/api-inl.h
"
8
#include "
src/base/logging.h
"
9
10
namespace
v8
{
11
12
namespace
internal
{
13
14
EmbedderState::EmbedderState
(
v8::Isolate
* isolate,
Local<v8::Context>
context,
15
EmbedderStateTag
tag)
16
:
isolate_
(reinterpret_cast<
i
::
Isolate
*>(isolate)),
17
tag_(tag),
18
previous_embedder_state_(
isolate_
->current_embedder_state()) {
19
if
(!context.IsEmpty()) {
20
native_context_address_ =
21
v8::Utils::OpenDirectHandle(*context)->native_context().address();
22
}
23
24
DCHECK_NE
(
this
,
isolate_
->current_embedder_state());
25
isolate_
->set_current_embedder_state(
this
);
26
}
27
28
EmbedderState::~EmbedderState
() {
29
DCHECK_EQ
(
this
,
isolate_
->current_embedder_state());
30
isolate_
->set_current_embedder_state(
previous_embedder_state_
);
31
}
32
33
void
EmbedderState::OnMoveEvent
(
Address
from,
Address
to) {
34
EmbedderState
* state =
this
;
35
do
{
36
if
(state->native_context_address_ == from) {
37
native_context_address_
=
to
;
38
}
39
state = state->previous_embedder_state_;
40
}
while
(state !=
nullptr
);
41
}
42
43
}
// namespace internal
44
45
}
// namespace v8
api-inl.h
isolate_
Isolate * isolate_
Definition
api-natives.cc:37
v8::Isolate
Definition
v8-isolate.h:274
v8::Local
Definition
v8-local-handle.h:267
v8::internal::EmbedderState
Definition
embedder-state.h:16
v8::internal::EmbedderState::isolate_
Isolate * isolate_
Definition
embedder-state.h:30
v8::internal::EmbedderState::~EmbedderState
~EmbedderState()
Definition
embedder-state.cc:28
v8::internal::EmbedderState::EmbedderState
EmbedderState(v8::Isolate *isolate, Local< v8::Context > context, EmbedderStateTag tag)
Definition
embedder-state.cc:14
v8::internal::EmbedderState::OnMoveEvent
void OnMoveEvent(Address from, Address to)
Definition
embedder-state.cc:33
v8::internal::EmbedderState::previous_embedder_state_
EmbedderState * previous_embedder_state_
Definition
embedder-state.h:33
v8::internal::EmbedderState::native_context_address_
Address native_context_address_
Definition
embedder-state.h:32
v8::internal::Isolate
Definition
isolate.h:586
embedder-state.h
to
Point to
Definition
liveedit-diff.cc:98
v8::internal
Definition
api-arguments-inl.h:20
v8::internal::internal
internal
Definition
wasm-objects-inl.h:458
v8::internal::Address
Address
Definition
api-callbacks-inl.h:36
v8
Definition
api-arguments-inl.h:19
v8::EmbedderStateTag
EmbedderStateTag
Definition
v8-embedder-state-scope.h:22
logging.h
DCHECK_NE
#define DCHECK_NE(v1, v2)
Definition
logging.h:486
DCHECK_EQ
#define DCHECK_EQ(v1, v2)
Definition
logging.h:485
src
execution
embedder-state.cc
Generated on Sun Apr 6 2025 21:08:53 for v8 by
1.12.0