• Mythri A's avatar
    [turboprop] Fix an incorrect DCHECK · a7857d44
    Mythri A authored
    When setting optimized code on feedback vector we had a DCHECK that
    ensured the optimization tier is kNone or it is kMidTier and we are
    installing TurboFan code. While this holds usually, this fails in
    few corner cases like:
    
    1. Trigger a TF concurrent compilation
    2. Create a new closure with --always-opt, which triggers a TF
    concurrent compilation and installs optimized code. We set
    OptimizationTier to kTopTier
    3. Optimized code gets deoptimized / GC clears the optimized code, but
    we haven't healed the optimized code slot / optimization tier yet.
    4. Concurrent compilation finishes and tries to install optimized code
    but the optimization tier is still set to kTopTier.
    
    This cl fixes the DCHECK by actually checking we are not overwriting
    valid optimized code except for tiering up.
    
    Drive by fixes: Also print optimization tier with feedback vector and
    print when marking a function for optimization with --always-opt.
    
    Bug: v8:11101, v8:9684
    Change-Id: Icad673ea01bb225f8b05e727a56f890af7e86514
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2520900
    Commit-Queue: Mythri Alle <mythria@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#71047}
    a7857d44
feedback-vector.cc 50.7 KB