Skip to content

Commit

Permalink
BREAKING: Add ComponentContext as parameter to ComponentsLogger#newPe…
Browse files Browse the repository at this point in the history
…rformanceEvent

Summary: This gives us access to things like TreeProps when creating a PerformanceEvent. This is uniquely useful from having them in the getExtraAnnotations function because we can log time-sensitive things at performance event creation time.

Reviewed By: astreet

Differential Revision: D14793443

fbshipit-source-id: f7609e0f9f992922498b6d04929a00ce3bb124cb
  • Loading branch information
usikder authored and facebook-github-bot committed Apr 6, 2019
1 parent 50ecbcb commit 2011d57
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1053,7 +1053,9 @@ private void preAllocateMountContent(boolean shouldPreallocatePerMountSpec) {
final PerfEvent event =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
mContext, logger, logger.newPerformanceEvent(EVENT_PRE_ALLOCATE_MOUNT_CONTENT))
mContext,
logger,
logger.newPerformanceEvent(mContext, EVENT_PRE_ALLOCATE_MOUNT_CONTENT))
: null;

toPrePopulate.preAllocateMountContent(shouldPreallocatePerMountSpec);
Expand Down Expand Up @@ -1687,7 +1689,7 @@ private void calculateLayout(
final PerfEvent layoutEvent =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
mContext, logger, logger.newPerformanceEvent(EVENT_LAYOUT_CALCULATE))
mContext, logger, logger.newPerformanceEvent(mContext, EVENT_LAYOUT_CALCULATE))
: null;

if (layoutEvent != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ enum LogLevel {
}

/** Create a new performance event with the given event id and start counting the time. */
PerfEvent newPerformanceEvent(@FrameworkLogEvents.LogEventId int eventId);
PerfEvent newPerformanceEvent(ComponentContext c, @FrameworkLogEvents.LogEventId int eventId);

/** Write a {@link PerfEvent} to storage. This also marks the end of the event. */
void logPerfEvent(PerfEvent event);
Expand Down
8 changes: 4 additions & 4 deletions litho-core/src/main/java/com/facebook/litho/LayoutState.java
Original file line number Diff line number Diff line change
Expand Up @@ -1323,7 +1323,7 @@ static LayoutState calculate(
final PerfEvent logLayoutState =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
c, logger, logger.newPerformanceEvent(EVENT_CALCULATE_LAYOUT_STATE))
c, logger, logger.newPerformanceEvent(c, EVENT_CALCULATE_LAYOUT_STATE))
: null;
if (logLayoutState != null) {
logLayoutState.markerAnnotate(PARAM_COMPONENT, component.getSimpleName());
Expand Down Expand Up @@ -1399,7 +1399,7 @@ static LayoutState calculate(
final PerfEvent collectResultsEvent =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
c, logger, logger.newPerformanceEvent(EVENT_COLLECT_RESULTS))
c, logger, logger.newPerformanceEvent(c, EVENT_COLLECT_RESULTS))
: null;

collectResults(c, root, layoutState, null);
Expand Down Expand Up @@ -1542,7 +1542,7 @@ static InternalNode createTree(
final PerfEvent createLayoutPerfEvent =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
context, logger, logger.newPerformanceEvent(EVENT_CREATE_LAYOUT))
context, logger, logger.newPerformanceEvent(context, EVENT_CREATE_LAYOUT))
: null;

if (createLayoutPerfEvent != null) {
Expand Down Expand Up @@ -1589,7 +1589,7 @@ static void measureTree(
final PerfEvent layoutEvent =
logger != null
? LogTreePopulator.populatePerfEventFromLogger(
context, logger, logger.newPerformanceEvent(EVENT_CSS_LAYOUT))
context, logger, logger.newPerformanceEvent(context, EVENT_CSS_LAYOUT))
: null;

if (layoutEvent != null) {
Expand Down
2 changes: 1 addition & 1 deletion litho-core/src/main/java/com/facebook/litho/LithoView.java
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ public void draw(Canvas canvas) {
? LogTreePopulator.populatePerfEventFromLogger(
getComponentContext(),
logger,
logger.newPerformanceEvent(FrameworkLogEvents.EVENT_DRAW))
logger.newPerformanceEvent(getComponentContext(), FrameworkLogEvents.EVENT_DRAW))
: null;
if (perfEvent != null) {
setPerfEvent(perfEvent);
Expand Down
4 changes: 3 additions & 1 deletion litho-core/src/main/java/com/facebook/litho/MountState.java
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,9 @@ void mount(LayoutState layoutState, Rect localVisibleRect, boolean processVisibi
logger == null
? null
: LogTreePopulator.populatePerfEventFromLogger(
componentTree.getContext(), logger, logger.newPerformanceEvent(EVENT_MOUNT));
componentTree.getContext(),
logger,
logger.newPerformanceEvent(componentTree.getContext(), EVENT_MOUNT));

if (mIsDirty) {
updateTransitions(layoutState, componentTree);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import static com.facebook.yoga.YogaEdge.TOP;
import static com.facebook.yoga.YogaPositionType.ABSOLUTE;
import static org.assertj.core.api.Java6Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
Expand Down Expand Up @@ -418,7 +419,8 @@ public void testContextSpecificComponentAssertionPasses() {
public void testContextSpecificComponentAssertionFailFormatting() {
final ComponentsLogger componentsLogger = mock(ComponentsLogger.class);
final PerfEvent perfEvent = mock(PerfEvent.class);
when(componentsLogger.newPerformanceEvent(anyInt())).thenReturn(perfEvent);
when(componentsLogger.newPerformanceEvent(any(ComponentContext.class), anyInt()))
.thenReturn(perfEvent);

InternalNode node = acquireInternalNodeWithLogger(componentsLogger);
node.alignSelf(YogaAlign.AUTO);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static PerfEvent getSectionsPerformanceEvent(

final PerfEvent logEvent =
LogTreePopulator.populatePerfEventFromLogger(
c, logger, logger.newPerformanceEvent(eventId));
c, logger, logger.newPerformanceEvent(c, eventId));
if (logEvent != null) {
logEvent.markerAnnotate(
PARAM_SECTION_CURRENT, currentSection == null ? "null" : currentSection.getSimpleName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public static <T> void onCreateChangeSet(
logger == null
? null
: LogTreePopulator.populatePerfEventFromLogger(
c, logger, logger.newPerformanceEvent(EVENT_SECTIONS_DATA_DIFF_CALCULATE_DIFF));
c, logger, logger.newPerformanceEvent(c, EVENT_SECTIONS_DATA_DIFF_CALCULATE_DIFF));

if (isTracing) {
ComponentsSystrace.beginSection("DiffUtil.calculateDiff");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import android.util.Pair;
import com.facebook.litho.BaseComponentsLogger;
import com.facebook.litho.ComponentContext;
import com.facebook.litho.FrameworkLogEvents;
import com.facebook.litho.PerfEvent;
import com.facebook.litho.TestPerfEvent;
Expand All @@ -40,7 +41,8 @@ public boolean isTracing(PerfEvent logEvent) {
}

@Override
public PerfEvent newPerformanceEvent(@FrameworkLogEvents.LogEventId int eventId) {
public PerfEvent newPerformanceEvent(
ComponentContext c, @FrameworkLogEvents.LogEventId int eventId) {
return new TestPerfEvent(eventId);
}

Expand Down

0 comments on commit 2011d57

Please sign in to comment.