- 19 Feb, 2015 1 commit
-
-
Dominik Charousset authored
-
- 18 Feb, 2015 5 commits
-
-
Dominik Charousset authored
After the most recent changes for optimizing forwarding and reducing memory allocation (d72c0ec8), those two member function now have a slightly different behavior than before. This change in semantics is reflected by renaming `last_dequeued` to `current_message` and `last_sender` to `current_sender`. The main change in semantics is that the new functions have a longer a "nop" effect when called outside callbacks or after forwarding a message. Instead, these function now cause undefined behavior, i.e., dereference a null pointer. This is now clearly stated in the manual.
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 17 Feb, 2015 15 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 16 Feb, 2015 9 commits
-
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 15 Feb, 2015 1 commit
-
-
Dominik Charousset authored
-
- 13 Feb, 2015 5 commits
-
-
Dominik Charousset authored
When forwarding a message, an actor transfers ownership of its current `mailbox_element` to the receiver. Combined with the previous optimization, this means that there is only a single memory allocation for a message from source to destination.
-
Dominik Charousset authored
Whenever an actor calls `send(dest, v1, v2, ...)`, we previously allocated a `mailbox_element` and a `message` object. The `fast_send` optimization joins both objects into a single one using `pair_storage`: ``` pair_storage<mailbox_element, tuple_vals<Ts...>>: /-----------------------------------------------\ | | | /------------\ | | | | intrusive_ptr | intrusive_ptr v v | | +------------+-------------------+---------------------+ | refcount | mailbox_element | tuple_vals<Ts...> | +------------+-------------------+---------------------+ ^ ^ | | unique_ptr<mailbox_element, | detail::disposer> | | | intrusive_ptr<message_data> ``` Since each element in `pair_storage` lives inside a `union`, it is safe to simply call the destructor for each element in `request_deletion`. This is done by extending both types and override `request_deletion` accordingly (see `detail::embedded`). The only additional safety measure we need to take is to make sure to swap the `intrusive_ptr` out of each element *before* calling the destructor. This way, the destruct is guaranteed to be done before we attempt to release the storage.
-
Dominik Charousset authored
-
Dominik Charousset authored
-
Dominik Charousset authored
-
- 12 Feb, 2015 3 commits
-
-
Matthias Vallentin authored
-
Joseph Noir authored
Fix memory leak in scoped_actor.
-
Jon Siwek authored
-
- 11 Feb, 2015 1 commit
-
-
Marian Triebe authored
-