Source/Packages

Runtime.NativePhysicalNative

packages/execution/src/Runtime/NativePhysicalNative.alpha

3,650 lines210 declarations198.6 KiBSHA-256 028b70105699

def · lines 2545–2650

nativePhysicalNativeScanRecord

Full file
RepeatBegin: push the enclosing frame, then iteration 0, the count from operand 0, the first body record, and the number of body records found by scanning forward to the matching RepeatEnd (tag 10) or RepeatEndWhen (tag 22); a nested RepeatBegin (tag 9) deepens the scan. Running off the image is a malformed record. A count of zero skips the body, nested bodies included: the records left lose the body's and this one, the frame is popped, and the advance steps past the end -- so a count read from the state makes a block conditional. Both forward branches and repeat-boundary search traverse unexecuted records. Validate before every load/advance: malformed extents must fail, never wrap the cursor or leave a zero-length scan spinning indefinitely. Registers are distinct; pointer and extent survive, scratch/field are dead.
2545def nativePhysicalNativeScanRecord =
2546  (lambda unrestricted pointer : (family X86NativeRegister64) .
2547    (lambda unrestricted extent : (family X86NativeRegister64) .
2548      (lambda unrestricted scratch : (family X86NativeRegister64) .
2549        (lambda unrestricted field : (family X86NativeRegister64) .
2550          (lambda unrestricted tail : (family X86NativeAssembly) .
2551            (npCompare
2552              npR12
2553              pointer
2554              (nativePhysicalNativeJumpCondition
2555                npBelow
2556                nativePhysicalNativeLabelFatalBounds
2557                (npMove
2558                  scratch
2559                  npR12
2560                  (nativePhysicalNativeEmit
2561                    (nativePhysicalNativeSubtract pointer scratch)
2562                    (npCompareImmediate
2563                      scratch
2564                      (nativePhysicalNativeI32Byte
2565                        (nat-to-byte nativePhysicalImageCommandHeaderBytes))
2566                      (nativePhysicalNativeJumpCondition
2567                        npBelow
2568                        nativePhysicalNativeLabelFatalRecord
2569                        (npLoad64
2570                          extent
2571                          pointer
2572                          nativePhysicalNativeD8
2573                          (npCompareImmediate
2574                            extent
2575                            (nativePhysicalNativeI32Byte
2576                              (nat-to-byte nativePhysicalImageCommandHeaderBytes))
2577                            (nativePhysicalNativeJumpCondition
2578                              npBelow
2579                              nativePhysicalNativeLabelFatalRecord
2580                              (npCompare
2581                                scratch
2582                                extent
2583                                (nativePhysicalNativeJumpCondition
2584                                  npBelow
2585                                  nativePhysicalNativeLabelFatalBounds
2586                                  (npMove
2587                                    scratch
2588                                    extent
2589                                    (nativePhysicalNativeScanFixedPart
2590                                        pointer
2591                                        scratch
2592                                        field
2593                                        (npLoad64
2594                                        field
2595                                        pointer
2596                                        (npD (byte 32))
2597                                        (npCompare
2598                                        scratch
2599                                        field
2600                                        (nativePhysicalNativeJumpCondition
2601                                        npBelow
2602                                        nativePhysicalNativeLabelFatalRecord
2603                                        (nativePhysicalNativeEmit
2604                                        (nativePhysicalNativeSubtract field scratch)
2605                                        (npLoad64
2606                                        field
2607                                        pointer
2608                                        (npD (byte 40))
2609                                        (npCompare
2610                                        scratch
2611                                        field
2612                                        (nativePhysicalNativeJumpCondition
2613                                        npBelow
2614                                        nativePhysicalNativeLabelFatalRecord
2615                                        (nativePhysicalNativeEmit
2616                                        (nativePhysicalNativeSubtract field scratch)
2617                                        (npLoad64
2618                                        field
2619                                        pointer
2620                                        (npD (byte 48))
2621                                        (npCompare
2622                                        scratch
2623                                        field
2624                                        (nativePhysicalNativeJumpCondition
2625                                        npBelow
2626                                        nativePhysicalNativeLabelFatalRecord
2627                                        (nativePhysicalNativeEmit
2628                                        (nativePhysicalNativeSubtract field scratch)
2629                                        (npTest
2630                                        scratch
2631                                        (nativePhysicalNativeJumpCondition
2632                                        npNotZero
2633                                        nativePhysicalNativeLabelFatalRecord
2634                                        (npLoad64
2635                                        field
2636                                        pointer
2637                                        nativePhysicalNativeD0
2638                                        (npCompareImmediate
2639                                        field
2640                                        (nativePhysicalNativeI32Byte (byte 1))
2641                                        (nativePhysicalNativeJumpCondition
2642                                        npBelow
2643                                        nativePhysicalNativeLabelFatalRecord
2644                                        (npCompareImmediate
2645                                        field
2646                                        (nativePhysicalNativeI32Byte (byte 23))
2647                                        (nativePhysicalNativeJumpCondition
2648                                        (constructor X86NativeCondition X86NativeConditionAbove)
2649                                        nativePhysicalNativeLabelFatalRecord
2650                                        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.