- 16 Feb, 2017 4 commits
-
-
Christopher Dykes authored
Summary: This includes both unused parameters (W4100) and conditional expression is constant (W4127). Reviewed By: yfeldblum Differential Revision: D4525057 fbshipit-source-id: 7c057dbe239d02fa2e3ce96373d53814591994ec
-
Christopher Dykes authored
Summary: They do the same thing, and the first is portable. Reviewed By: yfeldblum Differential Revision: D4569649 fbshipit-source-id: db0434766f674a7789d6e59335e122b4d2131e06
-
Maged Michael authored
Summary: Fixed a data race between an atomic store by the waker and a nonatomic memcpy by the waiter. Reviewed By: nbronson Differential Revision: D4572410 fbshipit-source-id: 3982ca433e0f628636916516e35aeb7738ae030f
-
Lovro Puzar authored
Summary: In D4558451 I want to pull elements off an atomic list onto a thread-local (single-consumer) vector and pop to get elements in insertion order. A sweep that provides elements in LIFO order will avoid a redundant pair of list reversals. Reviewed By: nbronson Differential Revision: D4564816 fbshipit-source-id: 38cf50418e6afe0be3eec96ce85d571c65f06d7e
-
- 15 Feb, 2017 3 commits
-
-
Philip Pronin authored
Summary: `defaultNumLowerBits` is heavily used during PL encoding with optimally-partitioned EF. This diff improves its performance by 3.5x by avoiding expensive 64-bit division. Reviewed By: ot, luciang Differential Revision: D4564615 fbshipit-source-id: 4521d3c05f19573cd2c84f702fcfeaace5f98e77
-
Phil Willoughby authored
Summary: The previous mechanism in SharedPromise doesn't work if the lifetime of the SharedPromise object ends before the Future which it was splitting is completed. This variation on the same theme doesn't have that problem. Reviewed By: spacedentist Differential Revision: D4339670 fbshipit-source-id: f619762bff1390481715575b3e638ec26b5c4edd
-
Anton Likhtarov authored
Summary: memcpy's src cannot be nullptr even if the size is 0. Reviewed By: djwatson Differential Revision: D4560100 fbshipit-source-id: 37cd3ed73f902a136f711a5c1a918258f94d1063
-
- 14 Feb, 2017 2 commits
-
-
Alex Malyshev authored
Summary: Intended to be used for case-insensitive prefix/suffix matching. Reviewed By: yfeldblum Differential Revision: D4552336 fbshipit-source-id: 0030b883426dd67bea27c3f878279359d51e1d33
-
Maxim Georgiev authored
Summary: Adding an interface to folly::AsyncSocket allowing to receive timestamp notifications collected using recvmsg(fd, MSG_ERRQUEUE, ...). Reviewed By: djwatson Differential Revision: D4329066 fbshipit-source-id: 154f5c0d04e5c0e410081d48c937af4069479fc2
-
- 11 Feb, 2017 1 commit
-
-
Adam Simpkins authored
Summary: Add explicit constructors to create Range objects referring to the contents of a std::array. D4165608 previously added a folly::range() factory function to create Ranges around const arrays. However, it did not support non-const arrays. However, providing this as a constructor seems better. This new constructor does not appear ambiguous with any existing constructors, and a constructor allows for more natural support of non-const arrays: the caller can explicitly indicate if they want to construct a Range to const or non-const data in this case. Reviewed By: yfeldblum Differential Revision: D4523515 fbshipit-source-id: c1a262f9e8f76907d87d80b03f252576506e70ab
-
- 10 Feb, 2017 3 commits
-
-
Andrii Grynenko authored
Reviewed By: lbrandy Differential Revision: D4544705 fbshipit-source-id: d60f2026d31c94e020df51f8c887b995986ddcd7
-
Jack Montgomery authored
Summary: folly/docs/Synchronized.md now reflects the fact that SharedMutex is default mutex for Synchronized Reviewed By: yfeldblum Differential Revision: D4529851 fbshipit-source-id: b3b8eafe908ba92e3629392fbc4b856b5a99b658
-
Andrew Krieger authored
Summary: D4499520 added typedefs to `dynamic` which made it start matching tests for ranges/containers. However, the typedefs are unconditional on the actual contents of the `dynamic`. This made toDynamic(dynamic) select the range-based conversion operator, always, which immediately asserts when trying to do range-based iteration over an Object or a primitive. Add tests to the converters that enable/disable depending on whether the object is already a `dynamic` and early-out in that case. Reviewed By: mzlee Differential Revision: D4538617 fbshipit-source-id: f3a5aafab07946a221dcead782fc27de51afa0a6
-
- 09 Feb, 2017 4 commits
-
-
Den Raskovalov authored
Summary: hasher<bool> is a trivial thing, but it is useful, if we implement a hash function for a class by writing something like: return folly::Hash()(boolField1_, boolField2_, intField3_, boolField4_, someField5_) Reviewed By: ot Differential Revision: D4535563 fbshipit-source-id: 5e6672c2eeaebbbac80a8a066a6a0ec4838810f4
-
Andrii Grynenko authored
Summary: EventBase and VirtualEventBase already had a loopKeepAlive() mechanism, which enabled libraries to prevent EventBase/VirtualEventBase from being destroyed until all keep-alive tokens were released. This change adds generic keepAlive() support into folly::Executor. folly::Executors which don't support keep-alive mechanism yet, will just return a no-op KeepAlive token. Reviewed By: yfeldblum Differential Revision: D4516649 fbshipit-source-id: 869779621c746cb14d985aa73bc4536859914c03
-
Phil Willoughby authored
Summary: Using the formatter is always much slower than using the copy constructor (News at 11). Comparing the two idioms for formatting out a single string input: * the unsafe method (`format(theString)`) is (annoyingly) fastest for small strings; probably because cache-hits dominate the need to inspect every character to see if it is `{` or `}` * the safe method (`format("{}",theString)`) is fastest on large strings (crossover at roughly 256 bytes) * there isn't a lot in it between 64 and 512 bytes. Reviewed By: yfeldblum Differential Revision: D4423088 fbshipit-source-id: 7f8590653ab33fe62887a506ea79a43989fbfb29
-
Andrew Krieger authored
Summary: Add non-const iterators corresponding to existing iterator types where it makes sense. Reviewed By: yfeldblum Differential Revision: D4499520 fbshipit-source-id: dc4ec583d3da1c6701805b30b25389fbf9311a7c
-
- 08 Feb, 2017 2 commits
-
-
Sebastian Messmer authored
Summary: This allows using folly::Optional<T> in std::unordered_map and std::unordered_set. Reviewed By: luciang Differential Revision: D4469938 fbshipit-source-id: b86b1a4510379b337e9de83471a4aafce6d5a6cb
-
Ameya Limaye authored
Summary: Throw custom exception type when ABD fails a result because some other token did not call dispatch: - This is useful because the caller can catch this exception and discard it if they find some other exception - The custom exception does not give an indication of the problem. The other exception/s thrown will do that. Reviewed By: yfeldblum Differential Revision: D4395742 fbshipit-source-id: be80f66b1297e9faf625a2fb087590a7d0a9335d
-
- 07 Feb, 2017 3 commits
-
-
Christopher Dykes authored
Summary: MSVC has warning 4800 which is triggered on implicit coercions to `bool` when not in use as the condition to a control-flow statement. Reviewed By: yfeldblum Differential Revision: D4518465 fbshipit-source-id: 858ab9e68215a2a667cb3ea55daf51b74368174d
-
Phil Willoughby authored
Summary: This decouples the format-string-parser from the storage of the arguments to be formatted: a static analyser can now define a class which derives from `BaseFormatter` with no storage and use `BaseFormatter::operator()` to verify the syntax of the format string and determine which arguments will be referenced. This method of allowing overrides is resolved at compile time; the benchmarks confirm that there is no run-time difference. Reviewed By: yfeldblum Differential Revision: D4507689 fbshipit-source-id: f109d81ae54dc074ac363720ef6e565520435d26
-
Phil Willoughby authored
Summary: Changes are planned, this will make it easier for the new code to look good without making the older code look weird. Reviewed By: yfeldblum Differential Revision: D4514839 fbshipit-source-id: 43f8cd7d85901e1915cc434a0f4b5fd6bce1ec7a
-
- 06 Feb, 2017 2 commits
-
-
Christopher Dykes authored
Summary: The rest of Folly isn't dependent on C++17 mode in MSVC, so modify this to support not having it enabled. This will make adoption easier as C++17 mode acts on the things the standard says are removed. Reviewed By: yfeldblum Differential Revision: D4509919 fbshipit-source-id: f4644f5f5ba78de8ab5192b89ac6320767b51084
-
Sven Over authored
Summary: Callable objects may implement a separate `operator()` for when they are called as rvalue references. For example, `folly::partial` will move captured objects to the function call when invoked as rvalue reference. That allows e.g. to capture pass a `unique_ptr` to `folly::partial` for a function that takes a `unique_ptr` by value or rvalue-reference. Callbacks for `folly::Future`s are only ever executed once. They may consume captured data. If the callback is an object that implements a `operator()() &&`, then that one should be invoked. This diff makes sure, callbacks passed to `folly::Future` are invoked as rvalue references. Reviewed By: ericniebler, fugalh Differential Revision: D4404186 fbshipit-source-id: 9f33e442a634acb8797183d3d869840d85bd5d15
-
- 04 Feb, 2017 2 commits
-
-
Andrey Ignatov authored
Summary: `TestConnectionEventCallback` and `TestAcceptCallback` are very handy and can be used in other tests outside folly. Specifically I'm going to use them in `ConnectHookTest`. It'll also allow to avoid copy/paste in `TransparentTlsTest`. Reviewed By: plapukhov Differential Revision: D4507461 fbshipit-source-id: dfaa97e26036ebb11da17a53d4a73431a295f4d4
-
Matt Glazar authored
Summary: environ is documented to not work very well from .dylib-s (dynamic libraries) on macOS. Use the _NSGetEnviron function instead to get a pointer to environ. <crt_externs.h> is missing from some iOS SDKs, so forward-declare _NSGetEnviron in such cases. Reviewed By: Orvid, mzlee Differential Revision: D4491044 fbshipit-source-id: 886d19bdd63dea14225992446b7ba132faf35054
-
- 03 Feb, 2017 3 commits
-
-
Xuli Liu authored
Summary: Currently BucketedTimeSeries does not expose enough functions to allow assessing its data, therefore there is no way to do serialization/deserialization. Adding functions/constructors to support this. Reviewed By: simpkins Differential Revision: D4500075 fbshipit-source-id: 656ac8a208547d8d3fadf9ea150606b6e74775c9
-
Mark Logan authored
Summary: Add ContainerT&& ctors to sorted_vector_map and sorted_vector_set, to support more efficient bulk-construction of these containers. With the prior constructors, the only way to do bulk-construction efficiently was by using the iterator constructors with a pre-sorted range. If you didn't have a presorted range, you would need to make a temporary container in order to get a sorted range. Repeatedly calling insert() without a sorted range is quadratic, hence not an option. Reviewed By: yfeldblum Differential Revision: D4491299 fbshipit-source-id: 041c546578f44ee6928c5506e8d8191092143b12
-
Mark Logan authored
Summary: The iterator constructors and the range insert() method previously had quadratic runtime if given an unsorted range. This is now fixed. We append the entire range to the container, sort that subrange, and merge it into the already-sorted container. Sorting and merging is skipped when possible. Reviewed By: yfeldblum Differential Revision: D4493534 fbshipit-source-id: e6d73b5c19e374001f9e340ff527c5257bef2ca3
-
- 02 Feb, 2017 2 commits
-
-
Pádraig Brady authored
Summary: GCC 5 doesn't recognize LOG(FATAL) as [[noreturn]], so remove [[noreturn]] to avoid that warning and build failure. Reviewed By: yfeldblum Differential Revision: D4484625 fbshipit-source-id: ca129ca3a52239becd7d80f99107e64745bf8838
-
Christopher Dykes authored
Summary: They were based on the signatures of the original functions as defined by MSVC. They should be based on the signatures as defined by Posix instead. Reviewed By: yfeldblum Differential Revision: D4471711 fbshipit-source-id: 8a6fd60ba2b326ca57058c119fc77c46f1d21d10
-
- 01 Feb, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Assorted cleanups for `folly/portability/BitsFunctexcept.h`. Reviewed By: Orvid, smeenai Differential Revision: D4492264 fbshipit-source-id: 5e85ac2ad96ef84627cc5473ec0b16c4c9b5da26
-
Scott Michelson authored
Summary: In many cases where MPMCQueue would be used, it's useful to be able to prioritize requests. This implements a thin wrapper on MPMCQueue to accomplish this (albeit in a bit of a memory inefficient way) Reviewed By: haijunz Differential Revision: D4465498 fbshipit-source-id: 6630b80ccf3138b5c135e7f7f281133b37d82b4d
-
Christopher Dykes authored
Summary: This results in a more uniform API within Folly, allowing for a more uniform API to use outside of Folly. Reviewed By: yfeldblum Differential Revision: D4471471 fbshipit-source-id: f798a6498bd1a05ed12adea362ff4aedd25789ee
-
Christopher Dykes authored
Summary: `clock_gettime(CLOCK_REALTIME)` is based on `std::system_clock` on Windows, but that only has a resolution that's the same as `FILETIME` (100s of nanoseconds), so modernize things and use `std::chrono::high_resolution_clock` which is intended for this purpose. Reviewed By: yfeldblum Differential Revision: D4476671 fbshipit-source-id: 3db1debc8f408f689b5c9fe1966a72b8dad4da93
-
- 31 Jan, 2017 3 commits
-
-
Igor Adamski authored
Summary: When start() throws because of reasons (in my case it was std::system_error("Resource temporarily unavailalble") coming from std::thread constructo) and during the exception propagation we will have to destroy FunctionScheduler then thread_.join() in shutdown will throw again. This diff sets running_ after the thread is created. Reviewed By: yfeldblum Differential Revision: D4469816 fbshipit-source-id: cde54dfbf39f04d3ea9dfa02a65295f5440e5ea4
-
Phil Willoughby authored
Summary: Because it's impossible to require that a parameter to a function is a compile-time constant string this replaces `shellify()` with the user-defined-literal suffix `_shellify()`. It's trivial to convert previously-correct code: `shellify("whatever {}", A)` => `"whatever {}"_shellify(A)` The previous `folly::shellify()` API is still present as a transition measure. Compilers will issue a deprecation warning if it is used. Reviewed By: yfeldblum Differential Revision: D4435512 fbshipit-source-id: 6639cd91280dc72108e47a8a7775c5160a4e644f
-
Michael Lee authored
Summary: Different deployments of don't always have access to crt_externs.h. Reviewed By: yfeldblum, Orvid Differential Revision: D4480621 fbshipit-source-id: f0b18d15fa253d6ba28dee68859cf9a34bf41255
-
- 30 Jan, 2017 2 commits
-
-
Michael Lee authored
Summary: Missed a `\` Reviewed By: Orvid Differential Revision: D4483602 fbshipit-source-id: 91451c3476756125abdbd0dd98ab9fb38bcf2c32
-
Michael Lee authored
Summary: TestUtil is primarily a temporary file and temporary directory. Split out the env variable manipulation into a different file. Reviewed By: Orvid Differential Revision: D4482071 fbshipit-source-id: 9d1a4a08010a8fad270aa56a7e1432829eb6484c
-