@@ -89,6 +89,16 @@ static void Chdir(const FunctionCallbackInfo<Value>& args) {
89
89
}
90
90
}
91
91
92
+ inline Local<ArrayBuffer> get_fields_array_buffer (
93
+ const FunctionCallbackInfo<Value>& args,
94
+ size_t index,
95
+ size_t array_length) {
96
+ CHECK (args[index ]->IsFloat64Array ());
97
+ Local<Float64Array> arr = args[index ].As <Float64Array>();
98
+ CHECK_EQ (arr->Length (), array_length);
99
+ return arr->Buffer ();
100
+ }
101
+
92
102
// CPUUsage use libuv's uv_getrusage() this-process resource usage accessor,
93
103
// to access ru_utime (user CPU time used) and ru_stime (system CPU time used),
94
104
// which are uv_timeval_t structs (long tv_sec, long tv_usec).
@@ -104,10 +114,7 @@ static void CPUUsage(const FunctionCallbackInfo<Value>& args) {
104
114
return env->ThrowUVException (err, " uv_getrusage" );
105
115
106
116
// 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 );
111
118
double * fields = static_cast <double *>(ab->GetBackingStore ()->Data ());
112
119
113
120
// Set the Float64Array elements to be user / system values in microseconds.
@@ -174,10 +181,7 @@ static void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
174
181
env->isolate_data ()->node_allocator ();
175
182
176
183
// Get the double array pointer from the Float64Array argument.
177
- CHECK (args[0 ]->IsFloat64Array ());
178
- Local<Float64Array> array = args[0 ].As <Float64Array>();
179
- CHECK_EQ (array->Length (), 5 );
180
- Local<ArrayBuffer> ab = array->Buffer ();
184
+ Local<ArrayBuffer> ab = get_fields_array_buffer (args, 0 , 5 );
181
185
double * fields = static_cast <double *>(ab->GetBackingStore ()->Data ());
182
186
183
187
fields[0 ] = rss;
@@ -263,10 +267,7 @@ static void ResourceUsage(const FunctionCallbackInfo<Value>& args) {
263
267
if (err)
264
268
return env->ThrowUVException (err, " uv_getrusage" );
265
269
266
- CHECK (args[0 ]->IsFloat64Array ());
267
- Local<Float64Array> array = args[0 ].As <Float64Array>();
268
- CHECK_EQ (array->Length (), 16 );
269
- Local<ArrayBuffer> ab = array->Buffer ();
270
+ Local<ArrayBuffer> ab = get_fields_array_buffer (args, 0 , 16 );
270
271
double * fields = static_cast <double *>(ab->GetBackingStore ()->Data ());
271
272
272
273
fields[0 ] = MICROS_PER_SEC * rusage .ru_utime .tv_sec + rusage .ru_utime .tv_usec ;
0 commit comments