An out-of-order processor, OOP-based device, comprising an execution pipeline comprising a decode stage (112, 300) and a dispatch stage, wherein: the decode stage of the execution pipeline is configured to: receive an instruction block (200, 302); extract a proxy value (202, 306) indicating an approximate predicted count of one or more instructions within the instruction block that will consume a system resource; and increment a running count by the proxy value; and the dispatch stage of the execution pipeline is configured to: prior to dispatching one or more instruction blocks younger than the instruction block, determine whether the running count exceeds a resource usage threshold; and responsive to determining that the running count exceeds the resource usage threshold, block dispatching of the one or more instruction blocks younger than the instruction block until the running count no longer exceeds the resource usage threshold; and wherein the decode stage of the execution pipeline is further configured to: receive a resource overflow flush indication during execution of a looped code segment; and responsive to receiving the resource overflow flush indication, dynamically reduce the resource usage threshold. the decode stage of the execution pipeline is configured to: receive an instruction block (200, 302); extract a proxy value (202, 306) indicating an approximate predicted count of one or more instructions within the instruction block that will consume a system resource; and increment a running count by the proxy value; and receive an instruction block (200, 302); extract a proxy value (202, 306) indicating an approximate predicted count of one or more instructions within the instruction block that will consume a system resource; and increment a running count by the proxy value; and the dispatch stage of the execution pipeline is configured to: prior to dispatching one or more instruction blocks younger than the instruction block, determine whether the running count exceeds a resource usage threshold; and responsive to determining that the running count exceeds the resource usage threshold, block dispatching of the one or more instruction blocks younger than the instruction block until the running count no longer exceeds the resource usage threshold; and prior to dispatching one or more instruction blocks younger than the instruction block, determine whether the running count exceeds a resource usage threshold; and responsive to determining that the running count exceeds the resource usage threshold, block dispatching of the one or more instruction blocks younger than the instruction block until the running count no longer exceeds the resource usage threshold; and wherein the decode stage of the execution pipeline is further configured to: receive a resource overflow flush indication during execution of a looped code segment; and responsive to receiving the resource overflow flush indication, dynamically reduce the resource usage threshold. receive a resource overflow flush indication during execution of a looped code segment; and responsive to receiving the resource overflow flush indication, dynamically reduce the resource usage threshold.