Fix some VDLRead bugs and minor clean-up.
While I was implementing the reflect version of VDLRead, I
noticed some bugs in both the vdl.Value and codegen versions of
VDLRead, so I fixed them.
The codegen set/map version was wrong because it was
early-existing when the lenhint is 0, rather than calling
NextEntry until it returned done. The lenhint handling in
general was wrong for multiple types; we need to ensure we end up
with nil collections if there are no entries.
I also made the codegen version of array faster, by filling the
elem in directly, rather than using a temp variable. I changed
the vdl.Value version list to add support for our eventual world
where the LenHint really isn't set, and employed a simple growth
strategy.
I also noticed that the type compatibility checks we added make
our benchmarks 20% worse. We can deal with that later.
MultiPart: 4/4
Change-Id: I81ba17fb6535ce7f9bd97c9e1d767eda2d699a6f
1 file changed