• Pierre Langlois's avatar
    [arm] Restrict grouping pushes before a TailCall to registers only · a72b2f88
    Pierre Langlois authored
    We optimize parallel moves performed before a TailCall by grouping adjacent
    pushes. This way, we may use a single instruction to push multiple registers at
    once. However, we also have support for pushing immediates and stack slots for
    which the benefit is questionnable therefore this patch removes support for
    them.
    
    Concerning immediate pushes, it looks like a mistake since we do not have
    support for this case in `AssembleMove` so this patch removes it. Furthermore,
    if we add a test for this case, we see that a `push ip` instruction is
    generated, effectively pushing whatever was in `ip` at the time instead of
    pushing a constant.
    
    Concerning stack slot pushes, we generate a more or less equivalent sequence of
    instructions.
    
    Finally, grouping floating point pushes is not used anywhere so this patch
    removes support for this also.
    
    Bug: v8:6553
    Change-Id: I9b820d33361fc442dd813f66e1f96cda41009110
    Reviewed-on: https://chromium-review.googlesource.com/567191Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
    Cr-Commit-Position: refs/heads/master@{#46718}
    a72b2f88
code-generator.h 13.3 KB