Landing Recent QUIC changes until 12/30/2015 21:25:57 UTC

relnote: Remove references to insecure QUIC from QUIC code.

Merge internal change: 111148463
https://codereview.chromium.org/1561613002/

relnote: Try to make QuicFramer path-aware.

Merge internal change: 111132961
https://codereview.chromium.org/1560093002/

relnote: Speed up QuicUtils::FNV1a_128_Hash by >2x. No functional change. Guarded by flag--quic_utils_use_fast_incremental_hash.

The improvement stems from the compiler being better able to optimize
__uint128_t intrinsics than base/int128.h, which results in a sufficient
reduction in code so the hashing loop can fit entirely in the IDQ.

Unfortunately, the actual benefit to QUIC is much less; this code is only used
for the null crypter, so the net improvement is only 3% of one Iota core.

Benchmark results:

Benchmarking blaze-out/gcc-4.X.Y-crosstool-v18-hybrid-grtev4-k8-opt/bin/gfe/quic/quic_utils_test
Run on jdorfman.cam (12 X 3501 MHz CPUs); 2015/12/29-10:17:01
CPU: Intel Ivybridge with HyperThreading (6 cores) dL1:32KB dL2:256KB dL3:12MB
Benchmark                    Time(ns)    CPU(ns) Iterations
-----------------------------------------------------------
BM_FNV1a_128_Hash_Slow/1            7          7   96655929 144.3MB/s
BM_FNV1a_128_Hash_Slow/8           33         33   19950100 234.4MB/s
BM_FNV1a_128_Hash_Slow/64         250        250    2784427 244.2MB/s
BM_FNV1a_128_Hash_Slow/512       1987       1987     354172 245.7MB/s
BM_FNV1a_128_Hash_Slow/2k        7956       7873      87130 248.1MB/s
BM_FNV1a_128_Hash_Fast/1            4          4  183786447 245.4MB/s
BM_FNV1a_128_Hash_Fast/8           13         13   53793929 590.8MB/s
BM_FNV1a_128_Hash_Fast/64         102        102    6545438 597.1MB/s
BM_FNV1a_128_Hash_Fast/512        800        801     876827 609.7MB/s
BM_FNV1a_128_Hash_Fast/2k        3247       3254     217981 600.2MB/s

Merge internal change: 111129897
https://codereview.chromium.org/1556023003/

relnote: Make headers self-contained

Un-disable header parsing in BUILD files to ensure that headers are self-contained.  Fix up headers and BUILD files to add missing dependencies.  There are only a few targets where I explicitly disabled parsing for especially troublesome headers.  I'll fix those in a follow-up CL.

Merge internal change: 111129322
https://codereview.chromium.org/1559173002/

relnote: Remove unused #include in quic_server_session_base.h and unnecessary forward declaration in quic_simple_server_stream.h. No behavior changed.

Merge internal change: 111087405
https://codereview.chromium.org/1556283002/

relnote: Close the QUIC connection in QuicPacketCreator instead of QuicConnection to ensure unencrypted stream data is ever written.  Flag protected by gfe2_reloadable_flag_quic_never_write_unencrypted_data.

Merge internal change: 110809817
https://codereview.chromium.org/1560593002/

relnote: Always flush in the packet generator when a full stream frame is constructed.  No functional change.

Expected to slightly improve branch prediction, because a packet is created everytime through the loop.

Merge internal change: 110701055
https://codereview.chromium.org/1560073002/

relnote: split QuicServerSession into an abstract base class(QuicServerSessionBase) and a derived class(QuicSimpleServerSession) implementing toy server session. No functional changes.

Move create incoming/outgoing/crypto stream methods to QuicSimpleServerSession. The rest methods remain in QuicServerSessionBase.

Merge internal change: 110695484
https://codereview.chromium.org/1556223002/

relnote: Replace last remaining NULLs in gfe/quic with nullptr. No behavior change.

Merge internal change: 110570650
https://codereview.chromium.org/1556053002/

[email protected]
BUG=

Review URL: https://codereview.chromium.org/1556403002

Cr-Commit-Position: refs/heads/master@{#367717}
43 files changed