Skip to content

Commit

Permalink
Un-revert logMarker for hermes diff
Browse files Browse the repository at this point in the history
Reviewed By: mhorowitz

Differential Revision: D6051880

fbshipit-source-id: 0ce4bbed9ba8579033ee5397ff6c0975b6886fb1
  • Loading branch information
johnislarry authored and facebook-github-bot committed Oct 13, 2017
1 parent 9877c08 commit f3b117a
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 48 deletions.
1 change: 1 addition & 0 deletions ReactAndroid/src/main/jni/react/jni/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ LOCAL_SRC_FILES := \
NativeMap.cpp \
OnLoad.cpp \
ProxyExecutor.cpp \
ReactMarker.cpp \
ReadableNativeArray.cpp \
ReadableNativeMap.cpp \
WritableNativeArray.cpp \
Expand Down
50 changes: 2 additions & 48 deletions ReactAndroid/src/main/jni/react/jni/AndroidJSCFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "JSCPerfLogging.h"
#include "JSLogging.h"
#include "ReactMarker.h"

using namespace facebook::jni;

Expand All @@ -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) {
Expand Down Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions ReactAndroid/src/main/jni/react/jni/BUCK
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ EXPORTED_HEADERS = [
"NativeArray.h",
"NativeCommon.h",
"NativeMap.h",
"ReactMarker.h",
"ReadableNativeArray.h",
"ReadableNativeMap.h",
"WritableNativeArray.h",
Expand Down
62 changes: 62 additions & 0 deletions ReactAndroid/src/main/jni/react/jni/ReactMarker.cpp
Original file line number Diff line number Diff line change
@@ -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;
}
}

}
}
24 changes: 24 additions & 0 deletions ReactAndroid/src/main/jni/react/jni/ReactMarker.h
Original file line number Diff line number Diff line change
@@ -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);
};

}
}

0 comments on commit f3b117a

Please sign in to comment.