// Copyright 2004-present Facebook. All Rights Reserved. #include #ifdef WITH_FB_MEMORY_PROFILING #include #include #include #include #include using namespace facebook::react; static JSValueRef nativeCaptureHeap( JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { if (argumentCount < 1) { if (exception) { *exception = Value::makeError( ctx, "nativeCaptureHeap requires the path to save the capture"); } return Value::makeUndefined(ctx); } auto outputFilename = String::adopt( ctx, JSValueToStringCopy(ctx, arguments[0], exception)); JSCaptureHeap(ctx, outputFilename.str().c_str(), exception); return Value::makeUndefined(ctx); } #endif // WITH_FB_MEMORY_PROFILING namespace facebook { namespace react { void addNativeMemoryHooks(JSGlobalContextRef ctx) { #ifdef WITH_FB_MEMORY_PROFILING installGlobalFunction(ctx, "nativeCaptureHeap", nativeCaptureHeap); #endif // WITH_FB_MEMORY_PROFILING } } }