• Adam Simpkins's avatar
    logging: reduce the amount of code emitted for log statements · fc91e303
    Adam Simpkins authored
    Summary:
    This refactors the logging code with the aim of reducing the amount of assembly
    code emitted for each log statement, particularly for `XLOG()` statements.
    Ideally it should be possible to put debug `XLOG()` statements throughout your
    code without having to worry about the performance overhead.  Therefore we
    should attempt to make sure that `XLOG()` statements do not generate a lot of
    assembly and hurt icache performance.
    
    This diff does not have any code behavior changes--it just moves code around a
    bit.  The high-level summary is:
    
    - Move as much code as possible into the LogStreamProcessor constructors and
      destructor.  Make sure these methods are defined in LogStreamProcessor.cpp to
      avoid having them be emitted inline at each log statement.
    - Move some of the XLOG level checking logic into separate non-inline functions
      defined in xlog.cpp
    - Pass xlog category information around as a pair of (categoryName,
      isOverridden) parameters.  If isOverridden is true then the categoryName
      parameter should be used as the category name directly.  If isOverridden is
      false, then categoryName is a filename that needs to go through filename to
      category name string processing.  This allows the category name processing to
      be done in non-inlined code.
    
    Reviewed By: wez
    
    Differential Revision: D5269976
    
    fbshipit-source-id: 7a7877ddfed66cd27ed82f052330b6aa2be4b37b
    fc91e303
xlog.cpp 4.42 KB