%PDF- %PDF-
| Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/src/execution/ |
| Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/src/execution/thread-local-top.cc |
// 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/execution/thread-local-top.h"
#include "src/execution/isolate.h"
#include "src/execution/simulator.h"
#include "src/base/sanitizer/msan.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/trap-handler/trap-handler.h"
#endif // V8_ENABLE_WEBASSEMBLY
namespace v8 {
namespace internal {
void ThreadLocalTop::Clear() {
try_catch_handler_ = nullptr;
isolate_ = nullptr;
context_ = Context();
thread_id_ = ThreadId();
pending_handler_entrypoint_ = kNullAddress;
pending_handler_constant_pool_ = kNullAddress;
pending_handler_fp_ = kNullAddress;
pending_handler_sp_ = kNullAddress;
num_frames_above_pending_handler_ = 0;
last_api_entry_ = kNullAddress;
pending_message_ = Tagged<Object>();
rethrowing_message_ = false;
external_caught_exception_ = false;
c_entry_fp_ = kNullAddress;
handler_ = kNullAddress;
c_function_ = kNullAddress;
simulator_ = nullptr;
js_entry_sp_ = kNullAddress;
external_callback_scope_ = nullptr;
current_vm_state_ = EXTERNAL;
current_embedder_state_ = nullptr;
failed_access_check_callback_ = nullptr;
thread_in_wasm_flag_address_ = kNullAddress;
is_on_central_stack_flag_ = true;
central_stack_sp_ = kNullAddress;
central_stack_limit_ = kNullAddress;
secondary_stack_sp_ = kNullAddress;
secondary_stack_limit_ = kNullAddress;
}
void ThreadLocalTop::Initialize(Isolate* isolate) {
Clear();
isolate_ = isolate;
thread_id_ = ThreadId::Current();
#if V8_ENABLE_WEBASSEMBLY
thread_in_wasm_flag_address_ = reinterpret_cast<Address>(
trap_handler::GetThreadInWasmThreadLocalAddress());
is_on_central_stack_flag_ = true;
#endif // V8_ENABLE_WEBASSEMBLY
#ifdef USE_SIMULATOR
simulator_ = Simulator::current(isolate);
#endif
}
void ThreadLocalTop::Free() {}
#if defined(USE_SIMULATOR)
void ThreadLocalTop::StoreCurrentStackPosition() {
last_api_entry_ = simulator_->get_sp();
}
#elif defined(V8_USE_ADDRESS_SANITIZER)
void ThreadLocalTop::StoreCurrentStackPosition() {
last_api_entry_ = reinterpret_cast<Address>(GetCurrentStackPosition());
}
#endif
} // namespace internal
} // namespace v8