Un-revert logMarker for hermes diff

Reviewed By: mhorowitz

Differential Revision: D6051880

fbshipit-source-id: 0ce4bbed9ba8579033ee5397ff6c0975b6886fb1
This commit is contained in:
Max Sherman 2017-10-13 14:00:46 -07:00 committed by Facebook Github Bot
parent 9877c08855
commit f3b117abd0
5 changed files with 90 additions and 48 deletions

View File

@ -22,6 +22,7 @@ LOCAL_SRC_FILES := \
NativeMap.cpp \
OnLoad.cpp \
ProxyExecutor.cpp \
ReactMarker.cpp \
ReadableNativeArray.cpp \
ReadableNativeMap.cpp \
WritableNativeArray.cpp \

View File

@ -13,6 +13,7 @@
#include "JSCPerfLogging.h"
#include "JSLogging.h"
#include "ReactMarker.h"
using namespace facebook::jni;
@ -21,53 +22,6 @@ namespace react {
namespace {
class JReactMarker : public JavaClass<JReactMarker> {
public:
static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ReactMarker;";
static void logMarker(const std::string& marker) {
static auto cls = javaClassStatic();
static auto meth = cls->getStaticMethod<void(std::string)>("logMarker");
meth(cls, marker);
}
static void logMarker(const std::string& marker, const std::string& tag) {
static auto cls = javaClassStatic();
static auto meth = cls->getStaticMethod<void(std::string, std::string)>("logMarker");
meth(cls, marker, tag);
}
};
void logPerfMarker(const ReactMarker::ReactMarkerId markerId, const char* tag) {
switch (markerId) {
case ReactMarker::RUN_JS_BUNDLE_START:
JReactMarker::logMarker("RUN_JS_BUNDLE_START", tag);
break;
case ReactMarker::RUN_JS_BUNDLE_STOP:
JReactMarker::logMarker("RUN_JS_BUNDLE_END", tag);
break;
case ReactMarker::CREATE_REACT_CONTEXT_STOP:
JReactMarker::logMarker("CREATE_REACT_CONTEXT_END");
break;
case ReactMarker::JS_BUNDLE_STRING_CONVERT_START:
JReactMarker::logMarker("loadApplicationScript_startStringConvert");
break;
case ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP:
JReactMarker::logMarker("loadApplicationScript_endStringConvert");
break;
case ReactMarker::NATIVE_MODULE_SETUP_START:
JReactMarker::logMarker("NATIVE_MODULE_SETUP_START", tag);
break;
case ReactMarker::NATIVE_MODULE_SETUP_STOP:
JReactMarker::logMarker("NATIVE_MODULE_SETUP_END", tag);
break;
case ReactMarker::NATIVE_REQUIRE_START:
case ReactMarker::NATIVE_REQUIRE_STOP:
// These are not used on Android.
break;
}
}
ExceptionHandling::ExtractedEror extractJniError(const std::exception& ex, const char *context) {
auto jniEx = dynamic_cast<const jni::JniException *>(&ex);
if (!jniEx) {
@ -126,7 +80,7 @@ namespace detail {
void injectJSCExecutorAndroidPlatform() {
// Inject some behavior into react/
ReactMarker::logTaggedMarker = logPerfMarker;
JReactMarker::setLogPerfMarkerIfNeeded();
ExceptionHandling::platformErrorExtractor = extractJniError;
JSCNativeHooks::loggingHook = nativeLoggingHook;
JSCNativeHooks::nowHook = nativePerformanceNow;

View File

@ -13,6 +13,7 @@ EXPORTED_HEADERS = [
"NativeArray.h",
"NativeCommon.h",
"NativeMap.h",
"ReactMarker.h",
"ReadableNativeArray.h",
"ReadableNativeMap.h",
"WritableNativeArray.h",

View File

@ -0,0 +1,62 @@
// Copyright 2004-present Facebook. All Rights Reserved.
#include "ReactMarker.h"
#include <mutex>
#include <cxxreact/Platform.h>
#include <jschelpers/JSCHelpers.h>
#include <fb/fbjni.h>
namespace facebook {
namespace react {
void JReactMarker::setLogPerfMarkerIfNeeded() {
static std::once_flag flag {};
std::call_once(flag, [](){
ReactMarker::logTaggedMarker = JReactMarker::logPerfMarker;
});
}
void JReactMarker::logMarker(const std::string& marker) {
static auto cls = javaClassStatic();
static auto meth = cls->getStaticMethod<void(std::string)>("logMarker");
meth(cls, marker);
}
void JReactMarker::logMarker(const std::string& marker, const std::string& tag) {
static auto cls = javaClassStatic();
static auto meth = cls->getStaticMethod<void(std::string, std::string)>("logMarker");
meth(cls, marker, tag);
}
void JReactMarker::logPerfMarker(const ReactMarker::ReactMarkerId markerId, const char* tag) {
switch (markerId) {
case ReactMarker::RUN_JS_BUNDLE_START:
JReactMarker::logMarker("RUN_JS_BUNDLE_START", tag);
break;
case ReactMarker::RUN_JS_BUNDLE_STOP:
JReactMarker::logMarker("RUN_JS_BUNDLE_END", tag);
break;
case ReactMarker::CREATE_REACT_CONTEXT_STOP:
JReactMarker::logMarker("CREATE_REACT_CONTEXT_END");
break;
case ReactMarker::JS_BUNDLE_STRING_CONVERT_START:
JReactMarker::logMarker("loadApplicationScript_startStringConvert");
break;
case ReactMarker::JS_BUNDLE_STRING_CONVERT_STOP:
JReactMarker::logMarker("loadApplicationScript_endStringConvert");
break;
case ReactMarker::NATIVE_MODULE_SETUP_START:
JReactMarker::logMarker("NATIVE_MODULE_SETUP_START", tag);
break;
case ReactMarker::NATIVE_MODULE_SETUP_STOP:
JReactMarker::logMarker("NATIVE_MODULE_SETUP_END", tag);
break;
case ReactMarker::NATIVE_REQUIRE_START:
case ReactMarker::NATIVE_REQUIRE_STOP:
// These are not used on Android.
break;
}
}
}
}

View File

@ -0,0 +1,24 @@
// Copyright 2004-present Facebook. All Rights Reserved.
#pragma once
#include <string>
#include <fb/fbjni.h>
#include <cxxreact/Platform.h>
namespace facebook {
namespace react {
class JReactMarker : public facebook::jni::JavaClass<JReactMarker> {
public:
static constexpr auto kJavaDescriptor = "Lcom/facebook/react/bridge/ReactMarker;";
static void setLogPerfMarkerIfNeeded();
private:
static void logMarker(const std::string& marker);
static void logMarker(const std::string& marker, const std::string& tag);
static void logPerfMarker(const ReactMarker::ReactMarkerId markerId, const char* tag);
};
}
}