[roll] Roll fuchsia [fidl] Natural types native encode validation

Previously, natural type encode validation relied on the C validator as
a second pass. This implements one pass encode + validation by
integrating validation steps into encode.

Recursion depth is added as an extra parameter rather than on the
encoder because while optimizing rust encoding, it was learned that this
leads to better optimization. When the state is on the encoder, it often
can't be optimized out (even if it isn't touched in many cases).

CPP/Encode/BoolArray/256/Steps.Encode/WallTime                                                          faster            0.179-0.181    1699.0 +/- 4.8 ns     306.51 +/- 0.74 ns
CPP/Encode/ByteArray/16/Steps.Encode/WallTime                                                           faster            0.790-0.827    208.5 +/- 2.8 ns      168.5 +/- 1.5 ns
CPP/Encode/ByteArray/256/Steps.Encode/WallTime                                                          faster            0.812-0.843    224.9 +/- 1.1 ns      186.0 +/- 2.5 ns
CPP/Encode/ByteVector/16/Steps.Encode/WallTime                                                          faster            0.760-0.780    256.8 +/- 2.3 ns      197.78 +/- 0.79 ns
CPP/Encode/ByteVector/256/Steps.Encode/WallTime                                                         faster            0.767-0.793    271.9 +/- 3.1 ns      212.0 +/- 1.1 ns
CPP/Encode/ByteVector/4096/Steps.Encode/WallTime                                                        faster            0.793-0.991    486 +/- 31 ns         430 +/- 21 ns
CPP/Encode/ByteVectorLimit/1/Steps.Encode/WallTime                                                      faster            0.766-0.777    254.5 +/- 1.3 ns      196.29 +/- 0.36 ns
CPP/Encode/DatagramSocket/RecvMsg/Request/Steps.Encode/WallTime                                         faster            0.783-0.817    218.7 +/- 2.7 ns      174.9 +/- 1.6 ns
CPP/Encode/DatagramSocket/RecvMsg/Result/Steps.Encode/WallTime                                          faster            0.759-0.818    624 +/- 11 ns         491.6 +/- 9.7 ns
CPP/Encode/DatagramSocket/SendMsg2/Request/Steps.Encode/WallTime                                        faster            0.793-0.857    552 +/- 10 ns         454.7 +/- 9.2 ns
CPP/Encode/DatagramSocket/SendMsg2/Result/Steps.Encode/WallTime                                         faster            0.700-0.727    268.1 +/- 2.0 ns      191.4 +/- 2.2 ns
CPP/Encode/EmptyStruct/Steps.Encode/WallTime                                                            faster            0.775-0.800    207.6 +/- 2.0 ns      163.48 +/- 0.98 ns
CPP/Encode/EnumArray/256/Steps.Encode/WallTime                                                          faster            0.182-0.187    1658.1 +/- 5.8 ns     306.4 +/- 3.1 ns
CPP/Encode/EnumArray/NonDense/256/Steps.Encode/WallTime                                                 faster            0.182-0.185    1660.9 +/- 5.6 ns     304.7 +/- 1.9 ns
CPP/Encode/ErrorSyntaxResult_Failure/Steps.Encode/WallTime                                              faster            0.709-0.729    244.5 +/- 1.8 ns      175.7 +/- 1.2 ns
CPP/Encode/ErrorSyntaxResult_Success/Steps.Encode/WallTime                                              faster            0.709-0.724    278.0 +/- 1.7 ns      199.21 +/- 0.85 ns
CPP/Encode/FloatArray/256/Steps.Encode/WallTime                                                         faster            0.886-0.904    331.5 +/- 1.8 ns      296.6 +/- 1.4 ns
CPP/Encode/GPUMagma/ExecuteImmediateCommandsRequest/CommandByte128/Semaphore8/Steps.Encode/WallTime     faster            0.703-0.716    337.8 +/- 1.5 ns      239.7 +/- 1.1 ns
CPP/Encode/HandleArray/Event/1/Steps.Encode/WallTime                                                    faster            0.693-0.744    240.2 +/- 7.6 ns      172.35 +/- 0.70 ns
CPP/Encode/HandleArray/Event/16/Steps.Encode/WallTime                                                   faster            0.594-0.654    447 +/- 17 ns         278.6 +/- 3.0 ns
CPP/Encode/HandleArray/Event/64/Steps.Encode/WallTime                                                   faster            0.535-0.563    1019 +/- 13 ns        559.6 +/- 6.8 ns
CPP/Encode/HandleArray/Plain/1/Steps.Encode/WallTime                                                    faster            0.692-0.752    239.4 +/- 6.3 ns      172.7 +/- 2.7 ns
CPP/Encode/HandleArray/Plain/16/Steps.Encode/WallTime                                                   faster            0.613-0.658    440 +/- 11 ns         279.4 +/- 3.0 ns
CPP/Encode/HandleArray/Plain/64/Steps.Encode/WallTime                                                   faster            0.528-0.556    1030 +/- 15 ns        557.9 +/- 6.1 ns
CPP/Encode/HardwareDisplay/OnVsyncEvent/Image64/Steps.Encode/WallTime                                   faster            0.752-0.776    269.0 +/- 2.5 ns      205.6 +/- 1.4 ns
CPP/Encode/Int32Array/256/Steps.Encode/WallTime                                                         faster            0.846-0.876    249.4 +/- 2.0 ns      214.6 +/- 2.0 ns
CPP/Encode/Int32Vector/256/Steps.Encode/WallTime                                                        faster            0.824-0.883    405.0 +/- 5.2 ns      345.5 +/- 7.7 ns
CPP/Encode/Media/StreamPacket/Steps.Encode/WallTime                                                     faster            0.796-0.804    219.18 +/- 0.93 ns    175.35 +/- 0.10 ns
CPP/Encode/MessageHeader/Steps.Encode/WallTime                                                          faster            0.798-0.837    210.5 +/- 1.4 ns      172.1 +/- 2.9 ns
CPP/Encode/PaddedStructTree/Depth8/Steps.Encode/WallTime                                                faster            0.708-0.735    1266 +/- 20 ns        914.0 +/- 2.5 ns
CPP/Encode/String/16/Steps.Encode/WallTime                                                              faster            0.773-0.794    254.5 +/- 2.1 ns      199.4 +/- 1.1 ns
CPP/Encode/String/256/Steps.Encode/WallTime                                                             faster            0.773-0.789    299.1 +/- 2.4 ns      233.64 +/- 0.53 ns
CPP/Encode/StructArray/256/Steps.Encode/WallTime                                                        faster            0.140-0.144    3082 +/- 24 ns        437.6 +/- 2.9 ns
CPP/Encode/StructField/16/Steps.Encode/WallTime                                                         faster            0.803-0.812    258.3 +/- 1.0 ns      208.67 +/- 0.32 ns
CPP/Encode/StructField/256/Steps.Encode/WallTime                                                        slower            1.166-1.208    1827 +/- 16 ns        2168 +/- 19 ns
CPP/Encode/StructTree/Depth8/Steps.Encode/WallTime                                                      faster            0.580-0.596    1688 +/- 14 ns        992.7 +/- 5.2 ns
CPP/Encode/StructVector/256/Steps.Encode/WallTime                                                       faster            0.169-0.180    3232 +/- 21 ns        565 +/- 15 ns
CPP/Encode/Table/AllSet/1/Steps.Encode/WallTime                                                         faster            0.693-0.716    265.1 +/- 2.8 ns      186.7 +/- 1.1 ns
CPP/Encode/Table/AllSet/16/Steps.Encode/WallTime                                                        faster            0.459-0.489    704.6 +/- 2.3 ns      333.8 +/- 9.6 ns
CPP/Encode/Table/AllSet/63/Steps.Encode/WallTime                                                        faster            0.431-0.438    2092.1 +/- 5.5 ns     908.4 +/- 5.3 ns
CPP/Encode/Table/LastSetOthersReserved/16/Steps.Encode/WallTime                                         faster            0.521-0.530    359.7 +/- 1.9 ns      188.90 +/- 0.61 ns
CPP/Encode/Table/LastSetOthersReserved/63/Steps.Encode/WallTime                                         faster            0.372-0.379    782.6 +/- 4.0 ns      293.8 +/- 1.6 ns
CPP/Encode/Table/SingleSet/16_of_16/Steps.Encode/WallTime                                               faster            0.559-0.574    447.5 +/- 2.2 ns      253.4 +/- 2.1 ns
CPP/Encode/Table/SingleSet/16_of_63/Steps.Encode/WallTime                                               faster            0.682-0.695    689.8 +/- 3.9 ns      475.1 +/- 1.9 ns
CPP/Encode/Table/SingleSet/1_of_1/Steps.Encode/WallTime                                                 faster            0.688-0.718    266.1 +/- 5.0 ns      186.91 +/- 0.50 ns
CPP/Encode/Table/SingleSet/1_of_16/Steps.Encode/WallTime                                                faster            0.712-0.734    350.6 +/- 2.5 ns      253.3 +/- 2.1 ns
CPP/Encode/Table/SingleSet/1_of_63/Steps.Encode/WallTime                                                faster            0.804-0.818    592.0 +/- 2.5 ns      479.9 +/- 2.0 ns
CPP/Encode/Table/SingleSet/63_of_63/Steps.Encode/WallTime                                               faster            0.506-0.517    1108.6 +/- 6.5 ns     566.9 +/- 2.8 ns
CPP/Encode/Table/Unset/1/Steps.Encode/WallTime                                                          faster            0.733-0.760    217.1 +/- 1.6 ns      162.0 +/- 1.8 ns
CPP/Encode/Table/Unset/16/Steps.Encode/WallTime                                                         faster            0.751-0.758    223.69 +/- 0.83 ns    168.88 +/- 0.16 ns
CPP/Encode/Table/Unset/63/Steps.Encode/WallTime                                                         faster            0.754-0.774    244.1 +/- 1.7 ns      186.5 +/- 1.2 ns
CPP/Encode/Union/LastSet/1/Steps.Encode/WallTime                                                        faster            0.702-0.721    241.9 +/- 1.8 ns      172.06 +/- 0.99 ns
CPP/Encode/Union/LastSet/16/Steps.Encode/WallTime                                                       faster            0.694-0.750    256.8 +/- 2.8 ns      185.3 +/- 5.2 ns
CPP/Encode/Union/LastSet/256/Steps.Encode/WallTime                                                      faster            0.871-0.933    627.6 +/- 3.2 ns      566 +/- 16 ns
HLCPP/Encode/EnumArray/256/Steps.Teardown/WallTime                                                      faster            0.724-0.991    12.4 +/- 1.1 ns       10.49 +/- 0.71 ns

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/653942
Original-Revision: 9bf36d679a56f42244001a31a4927cef58aa655d
GitOrigin-RevId: 7ded3391b796d50d7b87be3cd5032d51c1a6e35c
Change-Id: Ic5efef3d545d7e2a7f69f3c0212deda96fb11547
1 file changed
tree: 93496e5b3c9665f7b0abf3ea5f9088e542ef25c5
  1. infra/
  2. third_party/
  3. cts
  4. firmware
  5. flower
  6. jiri.lock
  7. minimal
  8. prebuilts
  9. README.md
  10. stem
  11. test_durations
  12. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.