/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
deps/v8/src/objects/foreign-inl.h
78 строк
3 KB
Michaël Zasso
deps: update V8 to 14.1.146.11
04 окт 2025, 19:47
Не верифицирован
04 окт 2025, 19:47
7772a2d
Код
Авторство
О чём код?
// Copyright 2018 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. #ifndef V8_OBJECTS_FOREIGN_INL_H_ #define V8_OBJECTS_FOREIGN_INL_H_ #include "src/objects/foreign.h" // Include the non-inl header before the rest of the headers. #include "src/common/globals.h" #include "src/execution/isolate-utils-inl.h" #include "src/heap/heap-write-barrier-inl.h" #include "src/objects/objects-inl.h" #include "src/sandbox/external-pointer-inl.h" #include "src/sandbox/isolate-inl.h" // Has to be the last include (doesn't have include guards): #include "src/objects/object-macros.h" namespace v8::internal { #include "torque-generated/src/objects/foreign-tq-inl.inc" TQ_OBJECT_CONSTRUCTORS_IMPL(Foreign) template <ExternalPointerTag tag> Address Foreign::foreign_address(IsolateForSandbox isolate) const { return HeapObject::ReadExternalPointerField<tag>(kForeignAddressOffset, isolate); } template <ExternalPointerTag tag> Address Foreign::foreign_address() const { IsolateForSandbox isolate = GetCurrentIsolateForSandbox(); return ReadExternalPointerField<tag>(kForeignAddressOffset, isolate); } template <ExternalPointerTag tag> void Foreign::set_foreign_address(IsolateForSandbox isolate, const Address value) { WriteExternalPointerField<tag>(kForeignAddressOffset, isolate, value); } template <ExternalPointerTag tag> void Foreign::init_foreign_address(IsolateForSandbox isolate, const Address initial_value) { InitExternalPointerField<tag>(kForeignAddressOffset, isolate, initial_value); } Address Foreign::foreign_address_unchecked(IsolateForSandbox isolate) const { return ReadExternalPointerField<kAnyForeignExternalPointerTagRange>( kForeignAddressOffset, isolate); } Address Foreign::foreign_address_unchecked() const { IsolateForSandbox isolate = GetCurrentIsolateForSandbox(); return foreign_address_unchecked(isolate); } ExternalPointerTag Foreign::GetTag() const { #ifdef V8_ENABLE_SANDBOX ExternalPointerHandle handle = RawExternalPointerField(kForeignAddressOffset, kAnyForeignExternalPointerTagRange) .Relaxed_LoadHandle(); IsolateForSandbox isolate = GetCurrentIsolateForSandbox(); return isolate.GetExternalPointerTableTagFor(*this, handle); #endif // V8_ENABLE_SANDBOX // Without the sandbox the address is stored untagged. return kExternalPointerNullTag; } } // namespace v8::internal #include "src/objects/object-macros-undef.h" #endif // V8_OBJECTS_FOREIGN_INL_H_