Skip to content

Commit

Permalink
src: move SIGINT watchdog utils to the contextify binding
Browse files Browse the repository at this point in the history
These are used when evaluating scripts so it makes more sense
to put them in the contextify binding whose other methods are
going to be used together.

PR-URL: #27290
Reviewed-By: Daniel Bevenius <[email protected]>
Reviewed-By: Yongsheng Zhang <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
joyeecheung committed Apr 22, 2019
1 parent 7c816b7 commit 19e3e02
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 27 deletions.
7 changes: 5 additions & 2 deletions lib/repl.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,13 @@ const {
propertyFilter: {
ALL_PROPERTIES,
SKIP_SYMBOLS
},
}
} = internalBinding('util');
const {
startSigintWatchdog,
stopSigintWatchdog
} = internalBinding('util');
} = internalBinding('contextify');

const history = require('internal/repl/history');

// Lazy-loaded.
Expand Down
20 changes: 20 additions & 0 deletions src/node_contextify.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,20 @@ void ContextifyContext::CompileFunction(
args.GetReturnValue().Set(fn);
}

static void StartSigintWatchdog(const FunctionCallbackInfo<Value>& args) {
int ret = SigintWatchdogHelper::GetInstance()->Start();
args.GetReturnValue().Set(ret == 0);
}

static void StopSigintWatchdog(const FunctionCallbackInfo<Value>& args) {
bool had_pending_signals = SigintWatchdogHelper::GetInstance()->Stop();
args.GetReturnValue().Set(had_pending_signals);
}

static void WatchdogHasPendingSigint(const FunctionCallbackInfo<Value>& args) {
bool ret = SigintWatchdogHelper::GetInstance()->HasPendingSignal();
args.GetReturnValue().Set(ret);
}

void Initialize(Local<Object> target,
Local<Value> unused,
Expand All @@ -1149,6 +1163,12 @@ void Initialize(Local<Object> target,
Environment* env = Environment::GetCurrent(context);
ContextifyContext::Init(env, target);
ContextifyScript::Init(env, target);

env->SetMethod(target, "startSigintWatchdog", StartSigintWatchdog);
env->SetMethod(target, "stopSigintWatchdog", StopSigintWatchdog);
// Used in tests.
env->SetMethodNoSideEffect(
target, "watchdogHasPendingSigint", WatchdogHasPendingSigint);
}

} // namespace contextify
Expand Down
24 changes: 0 additions & 24 deletions src/node_util.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "node_errors.h"
#include "node_watchdog.h"
#include "util.h"
#include "base_object-inl.h"

Expand Down Expand Up @@ -157,24 +156,6 @@ static void SetHiddenValue(const FunctionCallbackInfo<Value>& args) {
args.GetReturnValue().Set(maybe_value.FromJust());
}


void StartSigintWatchdog(const FunctionCallbackInfo<Value>& args) {
int ret = SigintWatchdogHelper::GetInstance()->Start();
args.GetReturnValue().Set(ret == 0);
}


void StopSigintWatchdog(const FunctionCallbackInfo<Value>& args) {
bool had_pending_signals = SigintWatchdogHelper::GetInstance()->Stop();
args.GetReturnValue().Set(had_pending_signals);
}


void WatchdogHasPendingSigint(const FunctionCallbackInfo<Value>& args) {
bool ret = SigintWatchdogHelper::GetInstance()->HasPendingSignal();
args.GetReturnValue().Set(ret);
}

void ArrayBufferViewHasBuffer(const FunctionCallbackInfo<Value>& args) {
CHECK(args[0]->IsArrayBufferView());
args.GetReturnValue().Set(args[0].As<ArrayBufferView>()->HasBuffer());
Expand Down Expand Up @@ -281,11 +262,6 @@ void Initialize(Local<Object> target,
env->SetMethodNoSideEffect(target, "getOwnNonIndexProperties",
GetOwnNonIndexProperties);

env->SetMethod(target, "startSigintWatchdog", StartSigintWatchdog);
env->SetMethod(target, "stopSigintWatchdog", StopSigintWatchdog);
env->SetMethodNoSideEffect(target, "watchdogHasPendingSigint",
WatchdogHasPendingSigint);

env->SetMethod(target, "arrayBufferViewHasBuffer", ArrayBufferViewHasBuffer);
Local<Object> constants = Object::New(env->isolate());
NODE_DEFINE_CONSTANT(constants, ALL_PROPERTIES);
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-util-sigint-watchdog.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if (common.isWindows) {

const assert = require('assert');
const { internalBinding } = require('internal/test/binding');
const binding = internalBinding('util');
const binding = internalBinding('contextify');

[(next) => {
// Test with no signal observed.
Expand Down

0 comments on commit 19e3e02

Please sign in to comment.