From af7104b49ed8363598a016bd3e4ac52baf32025f Mon Sep 17 00:00:00 2001 From: Adam Ernst Date: Mon, 11 Jul 2016 13:14:23 -0700 Subject: [PATCH] Extract part of executeApplicationScript into a C function Reviewed By: javache Differential Revision: D3542897 fbshipit-source-id: aa74c0c7c4477158fc9c8aff69432aed592f472f --- React/Executors/RCTJSCExecutor.mm | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/React/Executors/RCTJSCExecutor.mm b/React/Executors/RCTJSCExecutor.mm index 3c2a958459c..57512557d2b 100644 --- a/React/Executors/RCTJSCExecutor.mm +++ b/React/Executors/RCTJSCExecutor.mm @@ -694,30 +694,26 @@ static void installBasicSynchronousHooksOnContext(JSContext *context) if (!self.isValid) { return; } - [self->_performanceLogger markStartForTag:RCTPLScriptExecution]; - - JSValueRef jsError = NULL; - RCTJSCWrapper *jscWrapper = self->_jscWrapper; - JSStringRef execJSString = jscWrapper->JSStringCreateWithUTF8CString((const char *)script.bytes); - JSStringRef bundleURL = jscWrapper->JSStringCreateWithUTF8CString(sourceURL.absoluteString.UTF8String); - JSGlobalContextRef ctx = self->_context.context.JSGlobalContextRef; - JSValueRef result = jscWrapper->JSEvaluateScript(ctx, execJSString, NULL, bundleURL, 0, &jsError); - jscWrapper->JSStringRelease(bundleURL); - jscWrapper->JSStringRelease(execJSString); - + NSError *error = executeApplicationScript(self->_jscWrapper, script, sourceURL, self->_context.context.JSGlobalContextRef); [self->_performanceLogger markStopForTag:RCTPLScriptExecution]; - if (onComplete) { - NSError *error; - if (!result) { - error = RCTNSErrorFromJSError(jscWrapper, ctx, jsError); - } onComplete(error); } }), 0, @"js_call", (@{ @"url": sourceURL.absoluteString }))]; } +static NSError *executeApplicationScript(RCTJSCWrapper *jscWrapper, NSData *script, NSURL *sourceURL, JSGlobalContextRef ctx) +{ + JSValueRef jsError = NULL; + JSStringRef execJSString = jscWrapper->JSStringCreateWithUTF8CString((const char *)script.bytes); + JSStringRef bundleURL = jscWrapper->JSStringCreateWithUTF8CString(sourceURL.absoluteString.UTF8String); + JSValueRef result = jscWrapper->JSEvaluateScript(ctx, execJSString, NULL, bundleURL, 0, &jsError); + jscWrapper->JSStringRelease(bundleURL); + jscWrapper->JSStringRelease(execJSString); + return result ? nil : RCTNSErrorFromJSError(jscWrapper, ctx, jsError); +} + - (void)executeBlockOnJavaScriptQueue:(dispatch_block_t)block { if ([NSThread currentThread] != _javaScriptThread) {