• Jakob Gruber's avatar
    Reland "[osr] Add an install-by-offset mechanism" · b8473c52
    Jakob Gruber authored
    This is a reland of commit 51b99213
    
    Fixed in reland:
    - bytecode_age was incorrectly still accessed as an int8 (instead
      of int16).
    - age and osr state were incorrectly reset on ia32 (16-bit write
      instead of 32-bit).
    
    Original change's description:
    > [osr] Add an install-by-offset mechanism
    >
    > .. for concurrent OSR. There, the challenge is to hit the correct
    > JumpLoop bytecode once compilation completes, since execution has
    > moved on in the meantime.
    >
    > This CL adds a new mechanism to request installation at a specific
    > bytecode offset. We add a new `osr_install_target` field to the
    > BytecodeArray:
    >
    >   bitfield struct OSRUrgencyAndInstallTarget extends uint16 {
    >     osr_urgency: uint32: 3 bit;
    >     osr_install_target: uint32: 13 bit;
    >   }
    >
    >   // [...]
    >   osr_urgency_and_install_target: OSRUrgencyAndInstallTarget;
    >   bytecode_age: uint16;  // Only 3 bits used.
    >   // [...]
    >
    > Note urgency and install target are packed into one 16 bit field,
    > we can thus merge both checks into one comparison within JumpLoop.
    > Note also that these fields are adjacent to the bytecode age; we
    > still reset both OSR state and age with a single (now 32-bit)
    > store.
    >
    > The install target is the lowest 13 bits of the bytecode offset.
    > When set, every reached JumpLoop will check `is this my offset?`,
    > and if yes, jump into runtime to tier up.
    >
    > Drive-by: Rename BaselineAssembler::LoadByteField to LoadWord8Field.
    >
    > Bug: v8:12161
    > Change-Id: I275d468b19df3a4816392a2fec0713a8d211ef80
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571812
    > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
    > Commit-Queue: Jakob Linke <jgruber@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#79853}
    
    Bug: v8:12161
    Change-Id: I7c59b2a2aacb1d7d40fdf39396ec9d8d48b0b9ac
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3578543Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Jakob Linke <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#79911}
    b8473c52
baseline-assembler-riscv64-inl.h 18.3 KB