Skip to content

Commit

Permalink
src: use LocalVector in more places
Browse files Browse the repository at this point in the history
PR-URL: #56457
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
  • Loading branch information
jasnell committed Jan 5, 2025
1 parent 9400eae commit b736028
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/crypto/crypto_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -558,7 +559,7 @@ class CipherPushContext {
}

private:
std::vector<v8::Local<v8::Value>> list_;
v8::LocalVector<v8::Value> list_;
Environment* env_;
};

Expand Down
7 changes: 2 additions & 5 deletions src/env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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]] {
Expand Down Expand Up @@ -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) {
Expand Down
11 changes: 10 additions & 1 deletion src/env.h
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,16 @@ class AsyncHooks : public MemoryRetainer {
void grow_async_ids_stack();

v8::Global<v8::Array> js_execution_async_resources_;
std::vector<v8::Local<v8::Object>> native_execution_async_resources_;

// TODO(@jasnell): Note that this is technically illegal use of
// v8::Locals which should be kept on the stack. Here, the entries
// in this object grows and shrinks with the C stack, and entries
// will be in the right handle scopes, but v8::Locals are supposed
// to remain on the stack and not the heap. For general purposes
// this *should* be ok but may need to be looked at further should
// v8 become stricter in the future about v8::Locals being held in
// the stack.
v8::LocalVector<v8::Object> native_execution_async_resources_;

// Non-empty during deserialization
const SerializeInfo* info_ = nullptr;
Expand Down

0 comments on commit b736028

Please sign in to comment.