Skip to content

Eval breaker isn't checked when the optimizer produces small region executors in loops. #106101

Closed
@markshannon

Description

@markshannon

For tier2 optimization, the VM replaces the JUMP_BACKWARD instruction with ENTER_EXECUTOR.
If the executor does not execute the whole loop it may not check the eval-breaker, resulting in uninterruptable loops.

The obvious fix is to add an eval-breaker check to ENTER_EXECUTOR.
I think that is also the correct fix.
Adding extra checks of the eval break is always correct. The effect on performance should be low, as we hope that transfers of control from the interpreter to optimized code will be relatively rare.

Discovered here

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions