This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
// Copyright 2004-present Facebook. All Rights Reserved. |
|
|
|
#include "JSCLegacyTracing.h" |
|
|
|
#if defined(WITH_JSC_EXTRA_TRACING) |
|
|
|
#include <fbsystrace.h> |
|
#include <JavaScriptCore/API/JSProfilerPrivate.h> |
|
#include <jschelpers/JSCHelpers.h> |
|
#include <jschelpers/Value.h> |
|
|
|
static const char *ENABLED_FBSYSTRACE_PROFILE_NAME = "__fbsystrace__"; |
|
|
|
using namespace facebook::react; |
|
|
|
static int64_t int64FromJSValue(JSContextRef ctx, JSValueRef value, JSValueRef* exception) { |
|
return static_cast<int64_t>(JSC_JSValueToNumber(ctx, value, exception)); |
|
} |
|
|
|
static JSValueRef nativeTraceBeginLegacy( |
|
JSContextRef ctx, |
|
JSObjectRef function, |
|
JSObjectRef thisObject, |
|
size_t argumentCount, |
|
const JSValueRef arguments[], |
|
JSValueRef* exception) { |
|
if (FBSYSTRACE_LIKELY(argumentCount >= 1)) { |
|
uint64_t tag = int64FromJSValue(ctx, arguments[0], exception); |
|
if (!fbsystrace_is_tracing(tag)) { |
|
return Value::makeUndefined(ctx); |
|
} |
|
} |
|
|
|
JSStartProfiling(ctx, String(ctx, ENABLED_FBSYSTRACE_PROFILE_NAME), true); |
|
|
|
return Value::makeUndefined(ctx); |
|
} |
|
|
|
static JSValueRef nativeTraceEndLegacy( |
|
JSContextRef ctx, |
|
JSObjectRef function, |
|
JSObjectRef thisObject, |
|
size_t argumentCount, |
|
const JSValueRef arguments[], |
|
JSValueRef* exception) { |
|
if (FBSYSTRACE_LIKELY(argumentCount >= 1)) { |
|
uint64_t tag = int64FromJSValue(ctx, arguments[0], exception); |
|
if (!fbsystrace_is_tracing(tag)) { |
|
return Value::makeUndefined(ctx); |
|
} |
|
} |
|
|
|
JSEndProfiling(ctx, String(ctx, ENABLED_FBSYSTRACE_PROFILE_NAME)); |
|
|
|
return Value::makeUndefined(ctx); |
|
} |
|
|
|
#endif |
|
|
|
namespace facebook { |
|
namespace react { |
|
|
|
void addNativeTracingLegacyHooks(JSGlobalContextRef ctx) { |
|
#if defined(WITH_JSC_EXTRA_TRACING) |
|
installGlobalFunction(ctx, "nativeTraceBeginLegacy", nativeTraceBeginLegacy); |
|
installGlobalFunction(ctx, "nativeTraceEndLegacy", nativeTraceEndLegacy); |
|
#endif |
|
} |
|
|
|
} }
|
|
|