Skip to content

Commit 2770cd9

Browse files
yashLadhaBethGriggs
authored andcommittedDec 15, 2020
src: remove duplicate logic for getting buffer
We were fetching the buffer from the float array to send out the response in js land, however that logic is being duplicated in node_process.h. Now they will be using an inline to fetch the array buffers and making it more generic. PR-URL: #34553 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent 6bafe04 commit 2770cd9

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed
 

‎src/node_process_methods.cc

+13-12
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ static void Chdir(const FunctionCallbackInfo<Value>& args) {
8787
}
8888
}
8989

90+
inline Local<ArrayBuffer> get_fields_array_buffer(
91+
const FunctionCallbackInfo<Value>& args,
92+
size_t index,
93+
size_t array_length) {
94+
CHECK(args[index]->IsFloat64Array());
95+
Local<Float64Array> arr = args[index].As<Float64Array>();
96+
CHECK_EQ(arr->Length(), array_length);
97+
return arr->Buffer();
98+
}
99+
90100
// CPUUsage use libuv's uv_getrusage() this-process resource usage accessor,
91101
// to access ru_utime (user CPU time used) and ru_stime (system CPU time used),
92102
// which are uv_timeval_t structs (long tv_sec, long tv_usec).
@@ -104,10 +114,7 @@ static void CPUUsage(const FunctionCallbackInfo<Value>& args) {
104114
}
105115

106116
// Get the double array pointer from the Float64Array argument.
107-
CHECK(args[0]->IsFloat64Array());
108-
Local<Float64Array> array = args[0].As<Float64Array>();
109-
CHECK_EQ(array->Length(), 2);
110-
Local<ArrayBuffer> ab = array->Buffer();
117+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 2);
111118
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
112119

113120
// Set the Float64Array elements to be user / system values in microseconds.
@@ -203,10 +210,7 @@ static void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
203210
env->isolate_data()->node_allocator();
204211

205212
// Get the double array pointer from the Float64Array argument.
206-
CHECK(args[0]->IsFloat64Array());
207-
Local<Float64Array> array = args[0].As<Float64Array>();
208-
CHECK_EQ(array->Length(), 5);
209-
Local<ArrayBuffer> ab = array->Buffer();
213+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 5);
210214
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
211215

212216
fields[0] = rss;
@@ -292,10 +296,7 @@ static void ResourceUsage(const FunctionCallbackInfo<Value>& args) {
292296
if (err)
293297
return env->ThrowUVException(err, "uv_getrusage");
294298

295-
CHECK(args[0]->IsFloat64Array());
296-
Local<Float64Array> array = args[0].As<Float64Array>();
297-
CHECK_EQ(array->Length(), 16);
298-
Local<ArrayBuffer> ab = array->Buffer();
299+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 16);
299300
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
300301

301302
fields[0] = MICROS_PER_SEC * rusage.ru_utime.tv_sec + rusage.ru_utime.tv_usec;

0 commit comments

Comments
 (0)
Please sign in to comment.