mirror of https://github.com/nodejs/node.git
src: use LocalVector in more places
PR-URL: https://github.com/nodejs/node/pull/56457 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>pull/56294/merge
parent
9400eae52e
commit
b736028c7f
|
@ -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<v8::Local<v8::Value>> list_;
|
||||
v8::LocalVector<v8::Value> list_;
|
||||
Environment* env_;
|
||||
};
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
11
src/env.h
11
src/env.h
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue