• Benedikt Meurer's avatar
    [turbofan] Refactor the CheckedInt32Div/CheckedUint32Div lowering. · ce7ec6ef
    Benedikt Meurer authored
    Improve the lowering of CheckedInt32Div and CheckedUint32Div for the
    case that the right hand side is a known (positive) power of two, as
    in that case it's sufficient to just check the relevant bits on the
    left hand side and then shift by the appropriate amount of bits.
    
    This is significantly faster than what TurboFan is able to generate
    from the general lowering, even with all the MachineOperatorReducer
    magic (it even shows as a steady ~1.5% overall improvement on the
    Kraken crypto ccm benchmark).
    
    Also turn the general CheckedInt32Div lowering into readable code again,
    and make sure that all the bailout cases are properly covered by mjsunit
    tests (i.e. the "division by zero" bailout was not covered properly).
    
    Bug: v8:8015
    Change-Id: Ibfdd367a6ee5d70dcaa48801858042c5029b7004
    Reviewed-on: https://chromium-review.googlesource.com/1236954Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#56115}
    ce7ec6ef
number-divide.js 6.21 KB