Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/env.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.h')
-rw-r--r--src/env.h20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/env.h b/src/env.h
index e4ce0599089..d7ddd8e1a3f 100644
--- a/src/env.h
+++ b/src/env.h
@@ -857,12 +857,6 @@ class Environment : public MemoryRetainer {
inline void PushAsyncCallbackScope();
inline void PopAsyncCallbackScope();
- enum Flags {
- kNoFlags = 0,
- kOwnsProcessState = 1 << 1,
- kOwnsInspector = 1 << 2,
- };
-
static inline Environment* GetCurrent(v8::Isolate* isolate);
static inline Environment* GetCurrent(v8::Local<v8::Context> context);
static inline Environment* GetCurrent(
@@ -881,8 +875,8 @@ class Environment : public MemoryRetainer {
v8::Local<v8::Context> context,
const std::vector<std::string>& args,
const std::vector<std::string>& exec_args,
- Flags flags = Flags(),
- uint64_t thread_id = kNoThreadId);
+ EnvironmentFlags::Flags flags,
+ ThreadId thread_id);
~Environment() override;
void InitializeLibuv(bool start_profiler_idle_notifier);
@@ -1051,9 +1045,6 @@ class Environment : public MemoryRetainer {
inline bool has_serialized_options() const;
inline void set_has_serialized_options(bool has_serialized_options);
- static uint64_t AllocateThreadId();
- static constexpr uint64_t kNoThreadId = -1;
-
inline bool is_main_thread() const;
inline bool owns_process_state() const;
inline bool owns_inspector() const;
@@ -1338,7 +1329,7 @@ class Environment : public MemoryRetainer {
bool has_serialized_options_ = false;
std::atomic_bool can_call_into_js_ { true };
- Flags flags_;
+ uint64_t flags_;
uint64_t thread_id_;
std::unordered_set<worker::Worker*> sub_worker_contexts_;
@@ -1440,6 +1431,11 @@ class Environment : public MemoryRetainer {
Mutex native_immediates_threadsafe_mutex_;
NativeImmediateQueue native_immediates_threadsafe_;
NativeImmediateQueue native_immediates_interrupts_;
+ // Also guarded by native_immediates_threadsafe_mutex_. This can be used when
+ // trying to post tasks from other threads to an Environment, as the libuv
+ // handle for the immediate queues (task_queues_async_) may not be initialized
+ // yet or already have been destroyed.
+ bool task_queues_async_initialized_ = false;
void RunAndClearNativeImmediates(bool only_refed = false);
void RunAndClearInterrupts();