1. 09 8月, 2013 10 次提交
    • B
      auto merge of #8361 : alexcrichton/rust/fix-node-hashes-in-crates, r=thestinger · 2fe2e59c
      bors 提交于
      When running rusti 32-bit tests from a 64-bit host, these errors came up frequently. My best idea as to what was happening is:
      
      1. First, if you hash the same `int` value on 32-bit and 64-bit, you will get two different hashes.
      2. In a cross-compile situation, let's say x86_64 is building an i686 library, all of the hashes will be 64-bit hashes.
      3. Then let's say you use the i686 libraries and then attempt to link against the same i686 libraries, because you're calculating hashes with a 32-bit int instead of a 64-bit one, you'll have different hashes and you won't be able to find items in the metadata (the items were generated with a 64-bit int).
      
      This patch changes the items to always be hashed as an `i64` to preserve the hash value across architectures. Here's a nice before/after for this patch of the state of rusti tests
      
      ```
      host   target  before  after
      64     64      yes     yes
      64     32      no      no (llvm assertion)
      32     64      no      yes
      32     32      no      no (llvm assertion)
      ```
      
      Basically one case started working, but currently when the target is 32-bit LLVM is having a lot of problems generating code. That's another separate issue though.
      2fe2e59c
    • B
      auto merge of #8357 : omasanori/rust/cleanup, r=alexcrichton · 094e4260
      bors 提交于
      I feel it's time to eliminate them (and add some testcases.)
      094e4260
    • O
      Remove redundant Ord method impls. · b4d6ae5b
      OGINO Masanori 提交于
      Basically, generic containers should not use the default methods since a
      type of elements may not guarantees total order. str could use them
      since u8's Ord guarantees total order. Floating point numbers are also
      broken with the default methods because of NaN. Thanks for @thestinger.
      
      Timespec also guarantees total order AIUI. I'm unsure whether
      extra::semver::Identifier does so I left it alone. Proof needed.
      Signed-off-by: NOGINO Masanori <masanori.ogino@gmail.com>
      b4d6ae5b
    • B
      auto merge of #8350 : dim-an/rust/fix-struct-match, r=pcwalton · a931e04b
      bors 提交于
      Code that collects fields in struct-like patterns used to ignore
      wildcard patterns like `Foo{_}`. But `enter_defaults` considered
      struct-like patterns as default in order to overcome this
      (accoring to my understanding of situation).
      
      However such behaviour caused code like this:
      ```
      enum E {
          Foo{f: int},
          Bar
      }
      let e = Bar;
      match e {
          Foo{f: _f} => { /* do something (1) */ }
          _ => { /* do something (2) */ }
      }
      ```
      consider pattern `Foo{f: _f}` as default. That caused inproper behaviour
      and even segfaults while trying to destruct `Bar` as `Foo{f: _f}`.
      Issues: #5625 , #5530.
      
      This patch fixes `collect_record_or_struct_fields` to split cases of
      single wildcard struct-like pattern and no struct-like pattern at all.
      Former case resolved with `enter_rec_or_struct` (and not with
      `enter_defaults`).
      
      Closes #5625.
      Closes #5530.
      a931e04b
    • B
      auto merge of #8336 : stepancheg/rust/socket-addr-from-str, r=brson · 7a1b61d6
      bors 提交于
      FromStr implemented from scratch.
      
      It is overengineered a bit, however.
      
      Old implementation handles errors by fail!()-ing. And it has bugs, like it accepts `127.0.0.1::127.0.0.1` as IPv6 address, and does not handle all ipv4-in-ipv6 schemes. So I decided to implement parser from scratch.
      7a1b61d6
    • B
      auto merge of #8356 : toddaaro/rust/ws, r=brson · 936f70bd
      bors 提交于
      This pull request converts the scheduler from a naive shared queue scheduler to a naive workstealing scheduler. The deque is still a queue inside a lock, but there is still a substantial performance gain. Fiddling with the messaging benchmark I got a ~10x speedup and observed massively reduced memory usage.
      
      There are still *many* locations for optimization, but based on my experience so far it is a clear performance win as it is now.
      936f70bd
    • B
      auto merge of #8385 : cmr/rust/big-rollup, r=alexcrichton · 8f65dbfc
      bors 提交于
      This is a fairly large rollup, but I've tested everything locally, and none of
      it should be platform-specific.
      
      r=alexcrichton (bdfdbdd)
      r=brson (d803c18)
      r=alexcrichton (a5041d0)
      r=bstrie (317412a)
      r=alexcrichton (135c85e)
      r=thestinger (8805baa)
      r=pcwalton (0661178)
      r=cmr (9397fe0)
      r=cmr (caa4135)
      r=cmr (6a21d93)
      r=cmr (4dc3379)
      r=cmr (0aa5154)
      r=cmr (18be261)
      r=thestinger (f10be03)
      8f65dbfc
    • T
      Enabled workstealing in the scheduler. Previously we had one global work queue... · af2e0399
      toddaaro 提交于
      Enabled workstealing in the scheduler. Previously we had one global work queue shared by each scheduler. Now there is a separate work queue for each scheduler, and work is "stolen" from other queues when it is exhausted locally.
      af2e0399
    • C
      Fix more priv fallout · 878e74e1
      Corey Richardson 提交于
      878e74e1
    • C
      xfail-fast an aux test · 86d581f8
      Corey Richardson 提交于
      86d581f8
  2. 08 8月, 2013 30 次提交