From a9de0b9e06e09ccbafc982f56c48efaf4b42eaa0 Mon Sep 17 00:00:00 2001 From: James M Snell Date: Fri, 3 Jan 2025 11:11:31 -0800 Subject: [PATCH] src: use LocalVector in more places --- src/crypto/crypto_util.h | 5 +++-- src/env.cc | 7 ++----- src/env.h | 10 ++++++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/crypto/crypto_util.h b/src/crypto/crypto_util.h index 5c717c6fdb0fc4..a72c0a2a908294 100644 --- a/src/crypto/crypto_util.h +++ b/src/crypto/crypto_util.h @@ -547,7 +547,8 @@ void ThrowCryptoError(Environment* env, class CipherPushContext { public: - inline explicit CipherPushContext(Environment* env) : env_(env) {} + inline explicit CipherPushContext(Environment* env) + : list_(env->isolate()), env_(env) {} inline void push_back(const char* str) { list_.emplace_back(OneByteString(env_->isolate(), str)); @@ -558,7 +559,7 @@ class CipherPushContext { } private: - std::vector> list_; + v8::LocalVector list_; Environment* env_; }; diff --git a/src/env.cc b/src/env.cc index d4426432d67ba6..f0f97244fdef63 100644 --- a/src/env.cc +++ b/src/env.cc @@ -176,11 +176,7 @@ bool AsyncHooks::pop_async_context(double async_id) { } #endif native_execution_async_resources_.resize(offset); - if (native_execution_async_resources_.size() < - native_execution_async_resources_.capacity() / 2 && - native_execution_async_resources_.size() > 16) { - native_execution_async_resources_.shrink_to_fit(); - } + native_execution_async_resources_.shrink_to_fit(); } if (js_execution_async_resources()->Length() > offset) [[unlikely]] { @@ -1694,6 +1690,7 @@ AsyncHooks::AsyncHooks(Isolate* isolate, const SerializeInfo* info) fields_(isolate, kFieldsCount, MAYBE_FIELD_PTR(info, fields)), async_id_fields_( isolate, kUidFieldsCount, MAYBE_FIELD_PTR(info, async_id_fields)), + native_execution_async_resources_(isolate), info_(info) { HandleScope handle_scope(isolate); if (info == nullptr) { diff --git a/src/env.h b/src/env.h index d21f4dcb815116..9ebe3c06ad8b2f 100644 --- a/src/env.h +++ b/src/env.h @@ -26,7 +26,7 @@ #include "aliased_buffer.h" #if HAVE_INSPECTOR -#include "inspector_agent.h" +#include "inspector_agent.h"f #include "inspector_profiler.h" #endif #include "callback_queue.h" @@ -401,7 +401,13 @@ class AsyncHooks : public MemoryRetainer { void grow_async_ids_stack(); v8::Global js_execution_async_resources_; - std::vector> native_execution_async_resources_; + + // TODO(@jasnell): Note that this is technically illegal use of + // v8::Locals, which aren't supposed to live beyond the handle + // scope in which they were created. This should likely be a + // std::vector> but that's possibly a + // larger change that should be made separately. + v8::LocalVector native_execution_async_resources_; // Non-empty during deserialization const SerializeInfo* info_ = nullptr;