Our IR performes liveness checks on variables and should never
emit code that accesses variable indices outside the prescribed
scope size. This patch adds new getters that do not perform these
unnecessary checks, and wires up the JIT to call them.
This patch does not modify Full interpretation to use these
unchecked paths, because it would require either a boolean in
LocalVariaable operand and LoadLocalVariable instruction or a
pass to replace them with "Unchecked" versions.
It would also be better if we could generate these shapes of
DynamicScope on the fly, rather than maintaining a finite set of
This was returning null into Ruby for any thread that did not
have a name, which could cause NullPointerException far away from
the point of call. It was masked in some cases by our
DynamicScope logic that checks for null values, but #4168 removes
those checks for the JIT.