|
20 | 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. |
21 | 21 |
|
22 | 22 | #include "env-inl.h" |
| 23 | +#include "node_debug.h" |
23 | 24 | #include "node_external_reference.h" |
24 | 25 | #include "string_bytes.h" |
25 | 26 |
|
@@ -148,12 +149,26 @@ static void GetFreeMemory(const FunctionCallbackInfo<Value>& args) { |
148 | 149 | args.GetReturnValue().Set(amount); |
149 | 150 | } |
150 | 151 |
|
| 152 | +static double FastGetFreeMemory(Local<Value> receiver) { |
| 153 | + TRACK_V8_FAST_API_CALL("os.freemem"); |
| 154 | + return static_cast<double>(uv_get_free_memory()); |
| 155 | +} |
| 156 | + |
| 157 | +static v8::CFunction fast_get_free_memory( |
| 158 | + v8::CFunction::Make(FastGetFreeMemory)); |
151 | 159 |
|
152 | 160 | static void GetTotalMemory(const FunctionCallbackInfo<Value>& args) { |
153 | 161 | double amount = static_cast<double>(uv_get_total_memory()); |
154 | 162 | args.GetReturnValue().Set(amount); |
155 | 163 | } |
156 | 164 |
|
| 165 | +double FastGetTotalMemory(Local<Value> receiver) { |
| 166 | + TRACK_V8_FAST_API_CALL("os.totalmem"); |
| 167 | + return static_cast<double>(uv_get_total_memory()); |
| 168 | +} |
| 169 | + |
| 170 | +static v8::CFunction fast_get_total_memory( |
| 171 | + v8::CFunction::Make(FastGetTotalMemory)); |
157 | 172 |
|
158 | 173 | static void GetUptime(const FunctionCallbackInfo<Value>& args) { |
159 | 174 | Environment* env = Environment::GetCurrent(args); |
@@ -398,6 +413,14 @@ static void GetAvailableParallelism(const FunctionCallbackInfo<Value>& args) { |
398 | 413 | args.GetReturnValue().Set(parallelism); |
399 | 414 | } |
400 | 415 |
|
| 416 | +uint32_t FastGetAvailableParallelism(v8::Local<v8::Value> receiver) { |
| 417 | + TRACK_V8_FAST_API_CALL("os.availableParallelism"); |
| 418 | + return uv_available_parallelism(); |
| 419 | +} |
| 420 | + |
| 421 | +static v8::CFunction fast_get_available_parallelism( |
| 422 | + v8::CFunction::Make(FastGetAvailableParallelism)); |
| 423 | + |
401 | 424 | void Initialize(Local<Object> target, |
402 | 425 | Local<Value> unused, |
403 | 426 | Local<Context> context, |
@@ -406,16 +429,21 @@ void Initialize(Local<Object> target, |
406 | 429 | SetMethod(context, target, "getHostname", GetHostname); |
407 | 430 | SetMethod(context, target, "getLoadAvg", GetLoadAvg); |
408 | 431 | SetMethod(context, target, "getUptime", GetUptime); |
409 | | - SetMethod(context, target, "getTotalMem", GetTotalMemory); |
410 | | - SetMethod(context, target, "getFreeMem", GetFreeMemory); |
| 432 | + SetFastMethodNoSideEffect( |
| 433 | + context, target, "getTotalMem", GetTotalMemory, &fast_get_total_memory); |
| 434 | + SetFastMethodNoSideEffect( |
| 435 | + context, target, "getFreeMem", GetFreeMemory, &fast_get_free_memory); |
411 | 436 | SetMethod(context, target, "getCPUs", GetCPUInfo); |
412 | 437 | SetMethod(context, target, "getInterfaceAddresses", GetInterfaceAddresses); |
413 | 438 | SetMethod(context, target, "getHomeDirectory", GetHomeDirectory); |
414 | 439 | SetMethod(context, target, "getUserInfo", GetUserInfo); |
415 | 440 | SetMethod(context, target, "setPriority", SetPriority); |
416 | 441 | SetMethod(context, target, "getPriority", GetPriority); |
417 | | - SetMethod( |
418 | | - context, target, "getAvailableParallelism", GetAvailableParallelism); |
| 442 | + SetFastMethodNoSideEffect(context, |
| 443 | + target, |
| 444 | + "getAvailableParallelism", |
| 445 | + GetAvailableParallelism, |
| 446 | + &fast_get_available_parallelism); |
419 | 447 | SetMethod(context, target, "getOSInformation", GetOSInformation); |
420 | 448 | target |
421 | 449 | ->Set(context, |
@@ -429,14 +457,20 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { |
429 | 457 | registry->Register(GetLoadAvg); |
430 | 458 | registry->Register(GetUptime); |
431 | 459 | registry->Register(GetTotalMemory); |
| 460 | + registry->Register(FastGetTotalMemory); |
| 461 | + registry->Register(fast_get_total_memory.GetTypeInfo()); |
432 | 462 | registry->Register(GetFreeMemory); |
| 463 | + registry->Register(FastGetFreeMemory); |
| 464 | + registry->Register(fast_get_free_memory.GetTypeInfo()); |
433 | 465 | registry->Register(GetCPUInfo); |
434 | 466 | registry->Register(GetInterfaceAddresses); |
435 | 467 | registry->Register(GetHomeDirectory); |
436 | 468 | registry->Register(GetUserInfo); |
437 | 469 | registry->Register(SetPriority); |
438 | 470 | registry->Register(GetPriority); |
439 | 471 | registry->Register(GetAvailableParallelism); |
| 472 | + registry->Register(FastGetAvailableParallelism); |
| 473 | + registry->Register(fast_get_available_parallelism.GetTypeInfo()); |
440 | 474 | registry->Register(GetOSInformation); |
441 | 475 | } |
442 | 476 |
|
|