mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
src: do not use soon-to-be-deprecated V8 API
V8 announced deprecation of the following methods: - v8::Object::SetAccessor(...) in favor of v8::Object::SetNativeDataProperty(...), - v8::ObjectTemplate::SetNativeDataProperty(...) with AccessControl parameter in favor of v8::ObjectTemplate::SetNativeDataProperty(...) without AccessControl parameter. See https://crrev.com/c/5006387. This slightly changes behavior of the following properties: - process.debugPort (for worker processes), - process.title (for worker processes), - process.ppid. The difference is that they will now behave like a regular writable JavaScript data properties - in case setter callback is not provided they will be be reconfigured from a native data property (the one that calls C++ callbacks upon get/set operations) to a real data property (so subsequent reads will no longer trigger C++ getter callbacks). PR-URL: https://github.com/nodejs/node/pull/53174 Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
0a3f930065
commit
bb8d2936ab
@ -13,7 +13,6 @@
|
||||
|
||||
namespace node {
|
||||
using v8::Context;
|
||||
using v8::DEFAULT;
|
||||
using v8::EscapableHandleScope;
|
||||
using v8::Function;
|
||||
using v8::FunctionCallbackInfo;
|
||||
@ -183,13 +182,12 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
|
||||
|
||||
// process.title
|
||||
CHECK(process
|
||||
->SetAccessor(
|
||||
->SetNativeDataProperty(
|
||||
context,
|
||||
FIXED_ONE_BYTE_STRING(isolate, "title"),
|
||||
ProcessTitleGetter,
|
||||
env->owns_process_state() ? ProcessTitleSetter : nullptr,
|
||||
Local<Value>(),
|
||||
DEFAULT,
|
||||
None,
|
||||
SideEffectType::kHasNoSideEffect)
|
||||
.FromJust());
|
||||
@ -208,9 +206,15 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
|
||||
READONLY_PROPERTY(process, "pid",
|
||||
Integer::New(isolate, uv_os_getpid()));
|
||||
|
||||
CHECK(process->SetAccessor(context,
|
||||
FIXED_ONE_BYTE_STRING(isolate, "ppid"),
|
||||
GetParentProcessId).FromJust());
|
||||
CHECK(process
|
||||
->SetNativeDataProperty(context,
|
||||
FIXED_ONE_BYTE_STRING(isolate, "ppid"),
|
||||
GetParentProcessId,
|
||||
nullptr,
|
||||
Local<Value>(),
|
||||
None,
|
||||
SideEffectType::kHasNoSideEffect)
|
||||
.FromJust());
|
||||
|
||||
// --security-revert flags
|
||||
#define V(code, _, __) \
|
||||
@ -235,11 +239,14 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
|
||||
|
||||
// process.debugPort
|
||||
CHECK(process
|
||||
->SetAccessor(context,
|
||||
FIXED_ONE_BYTE_STRING(isolate, "debugPort"),
|
||||
DebugPortGetter,
|
||||
env->owns_process_state() ? DebugPortSetter : nullptr,
|
||||
Local<Value>())
|
||||
->SetNativeDataProperty(
|
||||
context,
|
||||
FIXED_ONE_BYTE_STRING(isolate, "debugPort"),
|
||||
DebugPortGetter,
|
||||
env->owns_process_state() ? DebugPortSetter : nullptr,
|
||||
Local<Value>(),
|
||||
None,
|
||||
SideEffectType::kHasNoSideEffect)
|
||||
.FromJust());
|
||||
}
|
||||
|
||||
|
@ -14,14 +14,16 @@ if (!process.env.HAS_STARTED_WORKER) {
|
||||
} else {
|
||||
{
|
||||
const before = process.title;
|
||||
process.title += ' in worker';
|
||||
assert.strictEqual(process.title, before);
|
||||
const after = before + ' in worker';
|
||||
process.title = after;
|
||||
assert.strictEqual(process.title, after);
|
||||
}
|
||||
|
||||
{
|
||||
const before = process.debugPort;
|
||||
process.debugPort++;
|
||||
assert.strictEqual(process.debugPort, before);
|
||||
const after = before + 1;
|
||||
process.debugPort = after;
|
||||
assert.strictEqual(process.debugPort, after);
|
||||
}
|
||||
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user