RepeatEnd: one more iteration done; while iterations remain, continue at
the first body record with the body's records (plus this end) still to
count, otherwise advance past the end.
Resolution scratches RAX/R10/R11; XMM0 preserves the first word while
resolving the second. Equality exits the bounded loop through the end's
frame pop; otherwise the existing end operation advances its counter and
enforces the original cap.
2965def nativePhysicalNativeRepeatEndWhenBlock =
2966 (lambda unrestricted tail : (family X86NativeAssembly) .
2967 (nativePhysicalNativeLabel
2968 nativePhysicalNativeLabelDispatchRepeatEndWhen
2969 (nativePhysicalNativeResolveCall
2970 (byte 64)
2971 npR11
2972 (nativePhysicalNativeEmit
2973 (constructor X86NativeInstruction X86NativeMoveToXMM64 npXMM0 npR11)
2974 (nativePhysicalNativeResolveCall
2975 (byte 88)
2976 npR11
2977 (nativePhysicalNativeEmit
2978 (constructor X86NativeInstruction X86NativeMoveFromXMM64 npRAX npXMM0)
2979 (npCompare
2980 npRAX
2981 npR11
2982 (nativePhysicalNativeJumpCondition
2983 npZero
2984 b"repeat-leave"
2985 (nativePhysicalNativeJump nativePhysicalNativeLabelDispatchRepeatEnd tail)))))))))The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.