about summary refs log tree commit diff
path: root/compiler/rustc_serialize/src
AgeCommit message (Collapse)AuthorLines
2022-02-20Delete Decoder::read_mapMark Rousskov-37/+26
2022-02-20Delete Decoder::read_seqMark Rousskov-54/+44
2022-02-20Delete Decoder::read_enum_variantMark Rousskov-14/+5
2022-02-20Delete Decoder::read_map_elt_valMark Rousskov-11/+3
2022-02-20Delete Decoder::read_map_elt_keyMark Rousskov-11/+3
2022-02-20Delete Decoder::read_optionMark Rousskov-13/+5
2022-02-20Delete Decoder::read_seq_eltMark Rousskov-19/+8
2022-02-20Delete Decoder::read_tuple_argMark Rousskov-12/+1
2022-02-20Delete Decoder::read_tupleMark Rousskov-15/+3
2022-02-20Use count! macro in tuple length computationMark Rousskov-3/+2
2022-02-20Delete Decoder::read_struct_fieldMark Rousskov-8/+0
2022-02-20Delete Decoder::read_structMark Rousskov-8/+0
2022-02-20Delete read_enum_variant_argMark Rousskov-10/+2
2022-02-20Delete read_enum_variant namesMark Rousskov-3/+3
2022-02-20Delete Decoder::read_enumMark Rousskov-21/+8
2022-02-20Remove support for JSON deserialization to RustMark Rousskov-314/+7
This is no longer used by the compiler itself, and removing this support opens the door to massively simplifying the Decodable/Decoder API by dropping the self-describing deserialization support (necessary for JSON).
2022-02-19Adopt let else in more placesest31-3/+3
2022-02-05Drop json::from_readerMark Rousskov-22/+0
Performing UTF-8 decode outside the JSON module makes more sense in almost all cases.
2022-01-31Remove two unnecessary transmutes from opaque Encoder and Decoderbjorn3-4/+3
2022-01-22Address review comments.Nicholas Nethercote-3/+1
2022-01-22Make `Decodable` and `Decoder` infallible.Nicholas Nethercote-307/+272
`Decoder` has two impls: - opaque: this impl is already partly infallible, i.e. in some places it currently panics on failure (e.g. if the input is too short, or on a bad `Result` discriminant), and in some places it returns an error (e.g. on a bad `Option` discriminant). The number of places where either happens is surprisingly small, just because the binary representation has very little redundancy and a lot of input reading can occur even on malformed data. - json: this impl is fully fallible, but it's only used (a) for the `.rlink` file production, and there's a `FIXME` comment suggesting it should change to a binary format, and (b) in a few tests in non-fundamental ways. Indeed #85993 is open to remove it entirely. And the top-level places in the compiler that call into decoding just abort on error anyway. So the fallibility is providing little value, and getting rid of it leads to some non-trivial performance improvements. Much of this commit is pretty boring and mechanical. Some notes about a few interesting parts: - The commit removes `Decoder::{Error,error}`. - `InternIteratorElement::intern_with`: the impl for `T` now has the same optimization for small counts that the impl for `Result<T, E>` has, because it's now much hotter. - Decodable impls for SmallVec, LinkedList, VecDeque now all use `collect`, which is nice; the one for `Vec` uses unsafe code, because that gave better perf on some benchmarks.
2022-01-22Rename `Decoder::read_nil` and `read_unit`.Nicholas Nethercote-5/+5
Because `()` is called "unit" and it makes it match `Encoder::emit_unit`.
2022-01-15Auto merge of #92604 - nnethercote:optimize-impl_read_unsigned_leb128, ↵bors-17/+20
r=michaelwoerister Optimize `impl_read_unsigned_leb128` I see instruction count improvements of up to 3.5% locally with these changes, mostly on the smaller benchmarks. r? `@michaelwoerister`
2022-01-07Unpeel the first iteration of the loop in impl_read_unsigned_leb128.Nicholas Nethercote-2/+11
2022-01-07Modify the buffer position directly when reading leb128 values.Nicholas Nethercote-15/+9
It's a small but clear performance win.
2021-12-28Do not use LEB128 for encoding u16 and i16Jakub Beránek-8/+15
2021-12-13Auto merge of #91626 - klensy:json-less-alloc, r=petrochenkovbors-3/+3
rustc_serialize: don't allocate `String`s as key for `BTreeMap`, when `str` is enough
2021-12-07don't allocate strings when str is enought for using as keyklensy-3/+3
2021-12-06avoid string validation in rustc_serialize, check a marker byte insteadThe 8472-4/+17
since the serialization format isn't self-describing we need a way to detect when encoder and decoder don't match up. but that doesn't have to be utf8 validation for strings, which does cost a few % of performance. Instead we can use a marker byte at the end to be reasonably sure that we're dealing with a string and it wasn't overwritten in some way.
2021-11-22Avoid generating empty closures for fieldless enumsMark Rousskov-0/+28
For many enums, this avoids generating lots of tiny stubs that need to be codegen'd and then inlined and removed by LLVM.
2021-10-15Revert "Auto merge of #89709 - clemenswasser:apply_clippy_suggestions_2, ↵Matthias Krüger-2/+2
r=petrochenkov" The PR had some unforseen perf regressions that are not as easy to find. Revert the PR for now. This reverts commit 6ae8912a3e7d2c4c775024f58a7ba4b1aedc4073, reversing changes made to 86d6d2b7389fe1b339402c1798edae8b695fc9ef.
2021-10-10Apply clippy suggestionsClemens Wasser-2/+2
2021-09-10rustc: Remove local variable IDs from `Export`sVadim Petrochenkov-0/+12
Local variables can never be exported.
2021-08-22Fix more “a”/“an” typosFrank Steffahn-2/+2
2021-08-22Fix typos “a”→“an”Frank Steffahn-1/+1
2021-08-18Remove box syntax from rustc_serializeest31-2/+1
2021-06-17Emit warnings for unused fields in custom targets.Adam Bratschi-Kaye-0/+9
2021-06-07Auto merge of #85903 - bjorn3:rustc_serialize_cleanup, r=varkorbors-279/+73
Remove unused functions and arguments from rustc_serialize
2021-06-01Remove unused functions and arguments from rustc_serializebjorn3-279/+73
2021-05-31Remove unused feature gatesbjorn3-3/+0
2021-03-26Auto merge of #83465 - michaelwoerister:safe-read_raw_bytes, r=cjgillotbors-35/+18
Allow for reading raw bytes from rustc_serialize::Decoder without unsafe code The current `read_raw_bytes` method requires using `MaybeUninit` and `unsafe`. I don't think this is necessary. Let's see if a safe interface has any performance drawbacks. This is a followup to #83273 and will make it easier to rebase #82183. r? `@cjgillot`
2021-03-25Allow for reading raw bytes from rustc_serialize::Decoder without unsafe code.Michael Woerister-35/+18
2021-03-24Revert "Revert stabilizing integer::BITS."Mara Bos-1/+0
2021-03-19Move raw bytes handling to Encoder/Decoder.Camille GILLOT-44/+70
2021-03-18Simplify IntEncodedWithFixedSize.Camille GILLOT-13/+7
2021-03-18Move IntEncodedWithFixedSize to rustc_serialize.Camille GILLOT-0/+48
2021-02-20Update the bootstrap compilerJoshua Nelson-1/+0
Note this does not change `core::derive` since it was merged after the beta bump.
2021-02-03Revert stabilizing integer::BITS.Mara Bos-0/+1
2021-01-31stabilize int_bits_constAshley Mannix-1/+0
2021-01-11rustc_serialize: fix incorrect signed LEB128 decodingTyson Nottingham-42/+45
The signed LEB128 decoding function used a hardcoded constant of 64 instead of the number of bits in the type of integer being decoded, which resulted in incorrect results for some inputs. Fix this, make the decoding more consistent with the unsigned version, and increase the LEB128 encoding and decoding test coverage.