assign() searches active/inactive for blocking intervals, even if findBestFreeRegister found a free register. Simplest fix is to either move the splitting code to a separate function (splitBlockingIntervals or something) or to give assign an optional isFree argument.
Created attachment 589022 [details] [diff] [review]
Move the splitting code from assign to splitBlockingIntervals, and call it when assigning a blocked register.
Applies on top of the patches in bug 712278.