From aaffb239cab5e730bbe83041fc9404946f2215e3 Mon Sep 17 00:00:00 2001 From: Mike Armstrong Date: Wed, 25 Nov 2015 00:49:17 -0800 Subject: [PATCH] Allow the output of the JSC profile to be specified in JS Reviewed By: astreet Differential Revision: D2674869 fb-gh-sync-id: 15e192015ecc9291359d6c988e793849eac97513 --- .../src/main/jni/react/JSCLegacyProfiler.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/jni/react/JSCLegacyProfiler.cpp b/ReactAndroid/src/main/jni/react/JSCLegacyProfiler.cpp index 64f47b00b..5d2a7e499 100644 --- a/ReactAndroid/src/main/jni/react/JSCLegacyProfiler.cpp +++ b/ReactAndroid/src/main/jni/react/JSCLegacyProfiler.cpp @@ -7,6 +7,7 @@ #include #include "JSCHelpers.h" #include "JSCLegacyProfiler.h" +#include "Value.h" static JSValueRef nativeProfilerStart( JSContextRef ctx, @@ -20,7 +21,7 @@ static JSValueRef nativeProfilerStart( return JSValueMakeUndefined(ctx); } - JSStringRef title = JSValueToStringCopy(ctx, arguments[0], NULL); + JSStringRef title = JSValueToStringCopy(ctx, arguments[0], exception); JSStartProfiling(ctx, title); JSStringRelease(title); return JSValueMakeUndefined(ctx); @@ -38,8 +39,16 @@ static JSValueRef nativeProfilerEnd( return JSValueMakeUndefined(ctx); } - JSStringRef title = JSValueToStringCopy(ctx, arguments[0], NULL); - JSEndProfilingAndRender(ctx, title, "/sdcard/profile.json"); + std::string writeLocation("/sdcard/"); + if (argumentCount > 1) { + JSStringRef fileName = JSValueToStringCopy(ctx, arguments[1], exception); + writeLocation += facebook::react::String::ref(fileName).str(); + JSStringRelease(fileName); + } else { + writeLocation += "profile.json"; + } + JSStringRef title = JSValueToStringCopy(ctx, arguments[0], exception); + JSEndProfilingAndRender(ctx, title, writeLocation.c_str()); JSStringRelease(title); return JSValueMakeUndefined(ctx); }