Skip to content
  • Kevin Menard's avatar
    158b8cb5
    YJIT: Add compilation log (#11818) · 158b8cb5
    Kevin Menard authored
    
    
    * YJIT: Add `--yjit-compilation-log` flag to print out the compilation log at exit.
    
    * YJIT: Add an option to enable the compilation log at runtime.
    
    * YJIT: Fix a typo in the `IseqPayload` docs.
    
    * YJIT: Add stubs for getting the YJIT compilation log in memory.
    
    * YJIT: Add a compilation log based on a circular buffer to cap the log size.
    
    * YJIT: Allow specifying either a file or directory name for the YJIT compilation log.
    
    The compilation log will be populated as compilation events occur. If a directory is supplied, then a filename based on the PID will be used as the write target. If a file name is supplied instead, the log will be written to that file.
    
    * YJIT: Add JIT compilation of C function substitutions to the compilation log.
    
    * YJIT: Add compilation events to the circular buffer even if output is sent to a file.
    
    Previously, the two modes were treated as being exclusive of one another. However, it could be beneficial to log all events to a file while also allowing for direct access of the last N events via `RubyVM::YJIT.compilation_log`.
    
    * YJIT: Make timestamps the first element in the YJIT compilation log tuple.
    
    * YJIT: Stream log to stderr if `--yjit-compilation-log` is supplied without an argument.
    
    * YJIT: Eagerly compute compilation log messages to avoid hanging on to references that may GC.
    
    * YJIT: Log all compiled blocks, not just the method entry points.
    
    * YJIT: Remove all compilation events other than block compilation to slim down the log.
    
    * YJIT: Replace circular buffer iterator with a consuming loop.
    
    * YJIT: Support `--yjit-compilation-log=quiet` as a way to activate the in-memory log without printing it.
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    
    * YJIT: Promote the compilation log to being the one YJIT log.
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    
    * Update doc/yjit/yjit.md
    
    * Update doc/yjit/yjit.md
    
    ---------
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    Co-authored-by: default avatarMaxime Chevalier-Boisvert <maximechevalierb@gmail.com>
    158b8cb5
    YJIT: Add compilation log (#11818)
    Kevin Menard authored
    
    
    * YJIT: Add `--yjit-compilation-log` flag to print out the compilation log at exit.
    
    * YJIT: Add an option to enable the compilation log at runtime.
    
    * YJIT: Fix a typo in the `IseqPayload` docs.
    
    * YJIT: Add stubs for getting the YJIT compilation log in memory.
    
    * YJIT: Add a compilation log based on a circular buffer to cap the log size.
    
    * YJIT: Allow specifying either a file or directory name for the YJIT compilation log.
    
    The compilation log will be populated as compilation events occur. If a directory is supplied, then a filename based on the PID will be used as the write target. If a file name is supplied instead, the log will be written to that file.
    
    * YJIT: Add JIT compilation of C function substitutions to the compilation log.
    
    * YJIT: Add compilation events to the circular buffer even if output is sent to a file.
    
    Previously, the two modes were treated as being exclusive of one another. However, it could be beneficial to log all events to a file while also allowing for direct access of the last N events via `RubyVM::YJIT.compilation_log`.
    
    * YJIT: Make timestamps the first element in the YJIT compilation log tuple.
    
    * YJIT: Stream log to stderr if `--yjit-compilation-log` is supplied without an argument.
    
    * YJIT: Eagerly compute compilation log messages to avoid hanging on to references that may GC.
    
    * YJIT: Log all compiled blocks, not just the method entry points.
    
    * YJIT: Remove all compilation events other than block compilation to slim down the log.
    
    * YJIT: Replace circular buffer iterator with a consuming loop.
    
    * YJIT: Support `--yjit-compilation-log=quiet` as a way to activate the in-memory log without printing it.
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    
    * YJIT: Promote the compilation log to being the one YJIT log.
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    
    * Update doc/yjit/yjit.md
    
    * Update doc/yjit/yjit.md
    
    ---------
    
    Co-authored-by: default avatarRandy Stauner <randy.stauner@shopify.com>
    Co-authored-by: default avatarMaxime Chevalier-Boisvert <maximechevalierb@gmail.com>
Loading