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
tree: 2d0e456ba795a56fbf1dbaef9769a2ff78ecc68e
  1. go/
  2. .gitignore
  3. AUTHORS
  4. CONTRIBUTING.md
  5. CONTRIBUTORS
  6. LICENSE
  7. PATENTS
  8. VERSION