The parameter "current" is only used to detect back edges, yet is passed is a pointer, and can point outside the bytecode area when checkTarget() is called for fall-through blocks. This is fragile, a future change could naively dereference current and crash or read invalid data. It might be a good idea to distinguish fall-through paths from branch paths, and simplify checkTarget for fall-through paths since they cannot be back edges.
Still valid, and FIXME is still in the code. Linking to the Code Cleanup tracker.