Count the body records from RAX up to the matching end into R11. RDX is the
nesting depth inside the body: a begin deepens it, an end at depth zero is
the match. Every record is validated by nativePhysicalNativeScanRecord before
its tag or extent is used (RDI holds the extent, R8/R9 are its scratch), and
the count stays below the records left in R13.
2812def npRepeatScan =
2813 (lambda unrestricted tail : (family X86NativeAssembly) .
2814 (nativePhysicalNativeLabel
2815 nativePhysicalNativeLabelRepeatScan
2816 (nativePhysicalNativeScanRecord
2817 npRAX
2818 npRDI
2819 (constructor X86NativeRegister64 X86NativeR8)
2820 (constructor X86NativeRegister64 X86NativeR9)
2821 (npCompare
2822 npRAX
2823 npR12
2824 (nativePhysicalNativeJumpCondition
2825 npBelow
2826 nativePhysicalNativeLabelRepeatScanNext
2827 (nativePhysicalNativeJump
2828 nativePhysicalNativeLabelFatalRecord
2829 (nativePhysicalNativeLabel
2830 nativePhysicalNativeLabelRepeatScanNext
2831 (npCompare
2832 npR11
2833 npR13
2834 (nativePhysicalNativeJumpCondition
2835 (constructor X86NativeCondition X86NativeConditionAbove)
2836 nativePhysicalNativeLabelFatalRecord
2837 (nativePhysicalNativeJumpCondition
2838 npZero
2839 nativePhysicalNativeLabelFatalRecord
2840 (npLoad64
2841 npRSI
2842 npRAX
2843 nativePhysicalNativeD0
2844 (npCompareImmediate
2845 npRSI
2846 (nativePhysicalNativeI32Byte (byte 9))
2847 (nativePhysicalNativeJumpCondition
2848 npZero
2849 b"repeat-scan-enter"
2850 (npCompareImmediate
2851 npRSI
2852 (nativePhysicalNativeI32Byte (byte 10))
2853 (nativePhysicalNativeJumpCondition
2854 npZero
2855 b"repeat-scan-end"
2856 (npCompareImmediate
2857 npRSI
2858 (nativePhysicalNativeI32Byte (byte 22))
2859 (nativePhysicalNativeJumpCondition
2860 npZero
2861 b"repeat-scan-end"
2862 (nativePhysicalNativeJump
2863 b"repeat-scan-advance"
2864 (nativePhysicalNativeLabel
2865 b"repeat-scan-enter"
2866 (npAddImmediate
2867 npRDX
2868 (nativePhysicalNativeI32Byte (byte 1))
2869 (nativePhysicalNativeJump
2870 b"repeat-scan-advance"
2871 (nativePhysicalNativeLabel
2872 b"repeat-scan-end"
2873 (npTest
2874 npRDX
2875 (nativePhysicalNativeJumpCondition
2876 npZero
2877 nativePhysicalNativeLabelRepeatFound
2878 (npAddImmediate
2879 npRDX
2880 nativePhysicalNativeI32NegativeOne
2881 (nativePhysicalNativeLabel
2882 b"repeat-scan-advance"
2883 (npAddImmediate
2884 npR11
2885 (nativePhysicalNativeI32Byte (byte 1))
2886 (npAdd
2887 npRAX
2888 npRDI
2889 (nativePhysicalNativeJump
2890 nativePhysicalNativeLabelRepeatScan
2891 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.