Class CancelPointInstr

java.lang.Object
org.ek9lang.compiler.ir.instructions.IRInstr
org.ek9lang.compiler.ir.instructions.CancelPointInstr
All Implemented Interfaces:
INode

public final class CancelPointInstr extends IRInstr
CANCEL_POINT: a point where an async task the pipeline no longer needs stops (EK9_BACKEND_IR_CONTRACTS.md Contract 24). When the running task's cancellation has been requested and not yet delivered, it is delivered: the task unwinds as org.ek9.lang::Cancelled, which no catch of an EK9 Exception catches and every finally sees. Anywhere else - off an async task, or once delivered - it does nothing.

Placed only by IR_OPTIMISATION (CancelPointPlacement) in an operation the runtime may call - the complement of SafePointInstr - so a task running EK9 code that never reaches a runtime wait still stops within one loop iteration or one call. No result, no operands, no debug information (it is no source line).

  • Constructor Details

    • CancelPointInstr

      public CancelPointInstr()