EDK: Stop having MojoCreateDataPipeOptions as a member of DataPipe.
The former is aligned whereas the latter isn't (except as forced by
having the former as a member), which made it at least a bit dubious.
R=jamesr@chromium.org
Review URL: https://codereview.chromium.org/1412183009 .
diff --git a/mojo/edk/system/data_pipe.cc b/mojo/edk/system/data_pipe.cc
index 7cfd2a5..109f1ac 100644
--- a/mojo/edk/system/data_pipe.cc
+++ b/mojo/edk/system/data_pipe.cc
@@ -656,7 +656,8 @@
bool has_local_consumer,
const MojoCreateDataPipeOptions& validated_options,
std::unique_ptr<DataPipeImpl> impl)
- : validated_options_(validated_options),
+ : element_num_bytes_(validated_options.element_num_bytes),
+ capacity_num_bytes_(validated_options.capacity_num_bytes),
producer_open_(true),
consumer_open_(true),
producer_awakable_list_(has_local_producer ? new AwakableList()
diff --git a/mojo/edk/system/data_pipe.h b/mojo/edk/system/data_pipe.h
index 62fe5aa..0d77668 100644
--- a/mojo/edk/system/data_pipe.h
+++ b/mojo/edk/system/data_pipe.h
@@ -9,7 +9,6 @@
#include <memory>
-#include "base/compiler_specific.h"
#include "mojo/edk/embedder/platform_handle_vector.h"
#include "mojo/edk/system/channel_endpoint_client.h"
#include "mojo/edk/system/handle_signals_state.h"
@@ -174,15 +173,14 @@
void ConsumerCloseNoLock() MOJO_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
// Thread-safe and fast (they don't take |mutex_|):
- const MojoCreateDataPipeOptions& validated_options() const {
- return validated_options_;
+ MojoCreateDataPipeOptions validated_options() const {
+ MojoCreateDataPipeOptions rv = {sizeof(MojoCreateDataPipeOptions),
+ MOJO_CREATE_DATA_PIPE_OPTIONS_FLAG_NONE,
+ element_num_bytes_, capacity_num_bytes_};
+ return rv;
}
- size_t element_num_bytes() const {
- return validated_options_.element_num_bytes;
- }
- size_t capacity_num_bytes() const {
- return validated_options_.capacity_num_bytes;
- }
+ size_t element_num_bytes() const { return element_num_bytes_; }
+ size_t capacity_num_bytes() const { return capacity_num_bytes_; }
// Must be called under |mutex_|.
bool producer_open_no_lock() const MOJO_SHARED_LOCKS_REQUIRED(mutex_) {
@@ -262,8 +260,8 @@
return !!consumer_awakable_list_;
}
- MSVC_SUPPRESS_WARNING(4324)
- const MojoCreateDataPipeOptions validated_options_;
+ const uint32_t element_num_bytes_;
+ const uint32_t capacity_num_bytes_;
mutable util::Mutex mutex_;
// *Known* state of producer or consumer.
diff --git a/mojo/edk/system/data_pipe_impl.h b/mojo/edk/system/data_pipe_impl.h
index 87464c8..e25b697 100644
--- a/mojo/edk/system/data_pipe_impl.h
+++ b/mojo/edk/system/data_pipe_impl.h
@@ -132,7 +132,7 @@
ChannelEndpointClient* channel_endpoint_client() const { return owner_; }
- const MojoCreateDataPipeOptions& validated_options() const {
+ MojoCreateDataPipeOptions validated_options() const {
return owner_->validated_options();
}
size_t element_num_bytes() const { return owner_->element_num_bytes(); }