1. 03 11月, 2018 5 次提交
    • B
      Move cg_llvm::back::linker to cg_utils · 942864a0
      bjorn3 提交于
      942864a0
    • B
      Auto merge of #55238 - alexcrichton:rm-jemalloc, r=estebank · b6e8f9db
      bors 提交于
      Remove the `alloc_jemalloc` crate
      
      This commit removes the `alloc_jemalloc` crate from the standard library and all related configuration. We will no longer be shipping this unstable crate. Rationale for this is provided on https://github.com/rust-lang/rust/issues/36963 and the many linked issues, but I can inline rationale here if desired!
      
      We currently rely on jemalloc for increased perf in the Rust compiler, however. [This perf run shows](https://perf.rust-lang.org/compare.html?start=74ff7dcb1388e60a613cd6050bcd372a3cc4998b&end=7e7928dc0340d79b404e93f0c79eb4b946c1d669&stat=wall-time) that if we switch to glibc 2.23's allocator that it's slower than jemalloc across many benchmarks. [This perf run, however](https://perf.rust-lang.org/compare.html?start=22cc2ae8057d14e980b7c784e1eb2eee26b59e7d&end=10c95ccfa7a7adc12f4e608621ca29f9b98eed29), shows that if we use `jemalloc-sys` from crates.io then rustc actually gets faster across all benchmarks! (presumably because it has a more recent version of jemalloc than our submodule).
      
      As a result, it's expected that this doesn't regress any code (as it's just removing an unstable crate) and it should actually improve rustc performance because it updates jemalloc.
      
      Closes #36963
      b6e8f9db
    • B
      Auto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum · 757d6cc9
      bors 提交于
      Bump cargo-vendor version
      
      Currently we pin `cargo-vendor` to 0.1.4, which doesn't set the `User-Agent` HTTP header. crates.io is going to require that header in the near future, so this PR bumps the pinned version of the crate to the latest one (which correctly sets the header).
      
      r? @Mark-Simulacrum
      cc @sgrif
      757d6cc9
    • B
      Auto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis · 3fc70e8d
      bors 提交于
      Take 2: Implement object-safety and dynamic dispatch for arbitrary_self_types
      
      This replaces #50173. Over the months that that PR was open, we made a lot of changes to the way this was going to be implemented, and the long, meandering comment thread and commit history would have been confusing to people reading it in the future. So I decided to package everything up with new, straighforward commits and open a new PR.
      
      Here are the main points. Please read the commit messages for details.
      
      - To simplify codegen, we only support receivers that have the ABI of a pointer. That means they are builtin pointer types, or newtypes thereof.
      - We introduce a new trait: `DispatchFromDyn<T>`, similar to `CoerceUnsized<T>`. `DispatchFromDyn` has extra requirements that `CoerceUnsized` does not: when you implement `DispatchFromDyn` for a struct, there cannot be any extra fields besides the field being coerced and `PhantomData` fields. This ensures that the struct's ABI is the same as a pointer.
      - For a method's receiver (e.g. `self: Rc<Self>`) to be object-safe, it needs to have the following property:
          - let `DynReceiver` be the receiver when `Self = dyn Trait`
          - let `ConcreteReceiver` be the receiver when `Self = T`, where `T` is some unknown `Sized` type that implements `Trait`, and is the erased type of the trait object.
          - `ConcreteReceiver` must implement `DispatchFromDyn<DynReceiver>`
      
      In the case of `Rc<Self>`, this requires `Rc<T>: DispatchFromDyn<Rc<dyn Trait>>`
      
      These rules are explained more thoroughly in the doc comment on `receiver_is_dispatchable` in object_safety.rs.
      
      r? @nikomatsakis and @EddyB
      
      cc @arielb1 @cramertj @withoutboats
      
      Special thanks to @nikomatsakis for getting me un-stuck when implementing the object-safety checks, and @EddyB for helping with the codegen parts.
      
      EDIT 2018-11-01: updated because CoerceSized has been replaced with DispatchFromDyn
      3fc70e8d
    • B
      Auto merge of #55087 - levex:e0669-improve-span, r=nagisa · 8b096314
      bors 提交于
      rustc: improve E0669 span
      
      E0669 refers to an operand that cannot be coerced into a single LLVM
      value, unfortunately right now this uses the Span for the entire inline
      assembly statement, which is less than ideal.
      
      This commit preserves the Span from HIR, which lets us emit the error
      using the Span for the operand itself in MIR.
      
      r? @nagisa
      cc/ @parched
      8b096314
  2. 02 11月, 2018 34 次提交
  3. 01 11月, 2018 1 次提交