• tzik's avatar
    Mark a non-primary path of ExtractHandlerContext as deferred · 06770cef
    tzik authored
    The performance regression comes from the extra time of
    ExtractHandlerContext called by TriggerPromiseReaction,
    On the previous code, it takes the current Context from Isolate,
    and on the typical case of the new code, the Context is taken from
    the promise reaction function, that adds a few memory read ops and
    a few conditional branches.
    
    This CL adds Label::kDeferred to non-typical cases of
    ExtractHandlerContext, so that newly added instructions have smaller
    impact under the speculative execution.
    On a local benchmark, this fixes half of the regression.
    
    Bug: chromium:936717
    Change-Id: I34ce858f77d7d604dd596711a239160ed8dac383
    Reviewed-on: https://chromium-review.googlesource.com/c/1496774
    Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59964}
    06770cef
builtins-promise-gen.cc 100 KB