{'fraction_non_alphanumeric': 0.013673655423883319, 'fraction_numerical': 0.0, 'mean_word_length': 5.458823529411765, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Scalar Queue Conversion: Dynamic Single Assignment for Concurrent Scheduling

This paper describes scalar queue conversion, a compiler transformation that makes scalar renaming an explicit operation through a process similar to closure conversion. We demonstrate how to use scalar queue conversion to slice a flow graph into two executable parts. When executed, the backward slice creates queues of suspended computations (continuations). At any point in time execution of the backward slice can be suspended and the queued continuations can be invoked to effect the state transformations of the forward slice. In other words, scalar queue conversion finds the concurrency between the backward and forward slices of a given point in the flow graph. We briefly describe our experience using an implementation of scalar queue conversion as the key subroutine in the SUDS automatic parallelization system for the Raw microprocessor. The SUDS compiler implements a generalized form of loop distribution that can distribute loops that contain inner loops with arbitrary (even irreducible) control flow.