/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #include "RCTJSCHelpers.h" #import #import #import #import #import #import using namespace facebook::react; namespace { JSValueRef nativeLoggingHook( JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef *exception) { RCTLogLevel level = RCTLogLevelInfo; if (argumentCount > 1) { level = MAX(level, (RCTLogLevel)Value(ctx, arguments[1]).asNumber()); } if (argumentCount > 0) { JSContext *contextObj = contextForGlobalContextRef(JSC_JSContextGetGlobalContext(ctx)); JSValue *msg = [JSC_JSValue(ctx) valueWithJSValueRef:arguments[0] inContext:contextObj]; _RCTLogJavaScriptInternal(level, [msg toString]); } return Value::makeUndefined(ctx); } JSValueRef nativePerformanceNow( JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef *exception) { return Value::makeNumber(ctx, CACurrentMediaTime() * 1000); } } void RCTPrepareJSCExecutor() { ReactMarker::logTaggedMarker = [](const ReactMarker::ReactMarkerId, const char *tag) {}; JSCNativeHooks::loggingHook = nativeLoggingHook; JSCNativeHooks::nowHook = nativePerformanceNow; JSCNativeHooks::installPerfHooks = RCTFBQuickPerformanceLoggerConfigureHooks; }