diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/async_wrap.cc | 23 | ||||
-rw-r--r-- | src/async_wrap.h | 7 |
2 files changed, 12 insertions, 18 deletions
diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 404873c4d2..90b532d73b 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -228,7 +228,7 @@ void AsyncWrap::EmitAfter(Environment* env, double async_id) { class PromiseWrap : public AsyncWrap { public: PromiseWrap(Environment* env, Local<Object> object, bool silent) - : AsyncWrap(env, object, silent) { + : AsyncWrap(env, object, PROVIDER_PROMISE, -1, silent) { MakeWeak(this); } size_t self_size() const override { return sizeof(*this); } @@ -582,32 +582,23 @@ AsyncWrap::AsyncWrap(Environment* env, Local<Object> object, ProviderType provider, double execution_async_id) - : BaseObject(env, object), - provider_type_(provider) { - CHECK_NE(provider, PROVIDER_NONE); - CHECK_GE(object->InternalFieldCount(), 1); + : AsyncWrap(env, object, provider, execution_async_id, false) {} - // Shift provider value over to prevent id collision. - persistent().SetWrapperClassId(NODE_ASYNC_ID_OFFSET + provider); - - // Use AsyncReset() call to execute the init() callbacks. - AsyncReset(execution_async_id); -} - - -// This is specifically used by the PromiseWrap constructor. AsyncWrap::AsyncWrap(Environment* env, Local<Object> object, + ProviderType provider, + double execution_async_id, bool silent) : BaseObject(env, object), - provider_type_(PROVIDER_PROMISE) { + provider_type_(provider) { + CHECK_NE(provider, PROVIDER_NONE); CHECK_GE(object->InternalFieldCount(), 1); // Shift provider value over to prevent id collision. persistent().SetWrapperClassId(NODE_ASYNC_ID_OFFSET + provider_type_); // Use AsyncReset() call to execute the init() callbacks. - AsyncReset(-1, silent); + AsyncReset(execution_async_id, silent); } diff --git a/src/async_wrap.h b/src/async_wrap.h index f0689d32f3..baaebb2a8b 100644 --- a/src/async_wrap.h +++ b/src/async_wrap.h @@ -185,8 +185,11 @@ class AsyncWrap : public BaseObject { private: friend class PromiseWrap; - // This is specifically used by the PromiseWrap constructor. - AsyncWrap(Environment* env, v8::Local<v8::Object> promise, bool silent); + AsyncWrap(Environment* env, + v8::Local<v8::Object> promise, + ProviderType provider, + double execution_async_id, + bool silent); inline AsyncWrap(); const ProviderType provider_type_; // Because the values may be Reset(), cannot be made const. |