• Jakob Gruber's avatar
    [execution] Only take a single lock while handling interrupts · 4e3b1874
    Jakob Gruber authored
    StackGuard::HandleInterrupts used to take a lock for testing and
    clearing each individual interrupt bit. This CL changes that to a
    single read up front.
    
    Slight behavioral changes:
    
    1. A TERMINATE_EXECUTION interrupt is now handled first; we
    immediately exit and preserve all other interrupts (in case V8 is
    later resumed).
    2. Since interrupts are read once, it is no longer possible to request
    an interrupt *within* HandleInterrupts that will later be processed
    within the same HandleInterrupts call.
    3. Stack limits are reset immediately after reading the interrupt
    bits, and prior to actually processing the interrupts.
    
    Bug: v8:9328
    Change-Id: I3048bb413213d11307df49e0014b64a2b43444e0
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1653115
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62132}
    4e3b1874
execution.h 8.65 KB