Skip to content

Commit cc2af79

Browse files
Fishrock123evanlucas
authored andcommitted
Revert "handle_wrap: IsRefed -> Unrefed, no isAlive check"
This reverts commit 9bb5a5e. This API is not suitable because it depended on being able to potentially access the handle's flag after the handle was already cleaned up. Since this is not actually possible (obviously, oops) this newer API no longer makes much sense, and the older API is more suitable. API comparison: IsRefed -> Has a strong reference AND is alive. (Deterministic) Unrefed -> Has a weak reference OR is dead. (Less deterministic) Refs: #6395 Refs: #6204 Refs: #6401 Refs: #6382 Fixes: #6381 PR-URL: #6546 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Trevor Norris <[email protected]> Conflicts: src/handle_wrap.cc test/parallel/test-handle-wrap-isrefed-tty.js test/parallel/test-handle-wrap-isrefed.js
1 parent 8a7e68f commit cc2af79

11 files changed

+50
-63
lines changed

src/handle_wrap.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ void HandleWrap::Unref(const FunctionCallbackInfo<Value>& args) {
3434
}
3535

3636

37-
void HandleWrap::Unrefed(const FunctionCallbackInfo<Value>& args) {
37+
void HandleWrap::IsRefed(const FunctionCallbackInfo<Value>& args) {
3838
HandleWrap* wrap = Unwrap<HandleWrap>(args.Holder());
39-
args.GetReturnValue().Set(!HasRef(wrap));
39+
args.GetReturnValue().Set(HasRef(wrap));
4040
}
4141

4242

src/handle_wrap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class HandleWrap : public AsyncWrap {
3535
static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
3636
static void Ref(const v8::FunctionCallbackInfo<v8::Value>& args);
3737
static void Unref(const v8::FunctionCallbackInfo<v8::Value>& args);
38-
static void Unrefed(const v8::FunctionCallbackInfo<v8::Value>& args);
38+
static void IsRefed(const v8::FunctionCallbackInfo<v8::Value>& args);
3939

4040
static inline bool IsAlive(const HandleWrap* wrap) {
4141
return wrap != nullptr && wrap->state_ != kClosed;

src/pipe_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ void PipeWrap::Initialize(Local<Object> target,
8080
env->SetProtoMethod(t, "close", HandleWrap::Close);
8181
env->SetProtoMethod(t, "unref", HandleWrap::Unref);
8282
env->SetProtoMethod(t, "ref", HandleWrap::Ref);
83-
env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed);
83+
env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed);
8484

8585
StreamWrap::AddMethods(env, t);
8686

src/process_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ProcessWrap : public HandleWrap {
4040

4141
env->SetProtoMethod(constructor, "ref", HandleWrap::Ref);
4242
env->SetProtoMethod(constructor, "unref", HandleWrap::Unref);
43-
env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed);
43+
env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed);
4444

4545
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Process"),
4646
constructor->GetFunction());

src/signal_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class SignalWrap : public HandleWrap {
3232
env->SetProtoMethod(constructor, "close", HandleWrap::Close);
3333
env->SetProtoMethod(constructor, "ref", HandleWrap::Ref);
3434
env->SetProtoMethod(constructor, "unref", HandleWrap::Unref);
35-
env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed);
35+
env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed);
3636
env->SetProtoMethod(constructor, "start", Start);
3737
env->SetProtoMethod(constructor, "stop", Stop);
3838

src/tcp_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void TCPWrap::Initialize(Local<Object> target,
8787

8888
env->SetProtoMethod(t, "ref", HandleWrap::Ref);
8989
env->SetProtoMethod(t, "unref", HandleWrap::Unref);
90-
env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed);
90+
env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed);
9191

9292
StreamWrap::AddMethods(env, t, StreamBase::kFlagHasWritev);
9393

src/timer_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class TimerWrap : public HandleWrap {
3939
env->SetProtoMethod(constructor, "close", HandleWrap::Close);
4040
env->SetProtoMethod(constructor, "ref", HandleWrap::Ref);
4141
env->SetProtoMethod(constructor, "unref", HandleWrap::Unref);
42-
env->SetProtoMethod(constructor, "unrefed", HandleWrap::Unrefed);
42+
env->SetProtoMethod(constructor, "isRefed", HandleWrap::IsRefed);
4343

4444
env->SetProtoMethod(constructor, "start", Start);
4545
env->SetProtoMethod(constructor, "stop", Stop);

src/tty_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void TTYWrap::Initialize(Local<Object> target,
3636

3737
env->SetProtoMethod(t, "close", HandleWrap::Close);
3838
env->SetProtoMethod(t, "unref", HandleWrap::Unref);
39-
env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed);
39+
env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed);
4040

4141
StreamWrap::AddMethods(env, t, StreamBase::kFlagNoShutdown);
4242

src/udp_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ void UDPWrap::Initialize(Local<Object> target,
108108

109109
env->SetProtoMethod(t, "ref", HandleWrap::Ref);
110110
env->SetProtoMethod(t, "unref", HandleWrap::Unref);
111-
env->SetProtoMethod(t, "unrefed", HandleWrap::Unrefed);
111+
env->SetProtoMethod(t, "isRefed", HandleWrap::IsRefed);
112112

113113
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "UDP"), t->GetFunction());
114114
env->set_udp_constructor_function(t->GetFunction());

test/parallel/test-handle-wrap-isrefed-tty.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,18 @@ function makeAssert(message) {
99
strictEqual(actual, expected, message);
1010
};
1111
}
12-
const assert = makeAssert('unrefed() not working on tty_wrap');
12+
const assert = makeAssert('isRefed() not working on tty_wrap');
1313

1414
if (process.argv[2] === 'child') {
1515
// Test tty_wrap in piped child to guarentee stdin being a TTY.
1616
const ReadStream = require('tty').ReadStream;
1717
const tty = new ReadStream(0);
18-
assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('unrefed'), true);
19-
assert(tty._handle.unrefed(), false);
18+
assert(Object.getPrototypeOf(tty._handle).hasOwnProperty('isRefed'), true);
19+
assert(tty._handle.isRefed(), true);
2020
tty.unref();
21-
assert(tty._handle.unrefed(), true);
22-
tty._handle.close(common.mustCall(() => assert(tty._handle.unrefed(), true)));
23-
tty._handle.close(common.fail);
24-
assert(tty._handle.unrefed(), true);
21+
assert(tty._handle.isRefed(), false);
22+
tty._handle.close(
23+
common.mustCall(() => assert(tty._handle.isRefed(), false)));
2524
return;
2625
}
2726

0 commit comments

Comments
 (0)