| Index: third_party/protobuf/patches/0007-uninline_googleonce.patch
|
| diff --git a/third_party/protobuf/patches/0007-uninline_googleonce.patch b/third_party/protobuf/patches/0007-uninline_googleonce.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..85362e855e676092534c9a80425d780a259bb1d4
|
| --- /dev/null
|
| +++ b/third_party/protobuf/patches/0007-uninline_googleonce.patch
|
| @@ -0,0 +1,36 @@
|
| +unchanged:
|
| +--- protobuf-cleaned/src/google/protobuf/stubs/once.cc 2015-12-30 13:21:46.000000000 -0800
|
| ++++ protobuf-patched/src/google/protobuf/stubs/once.cc 2016-03-31 13:25:32.180017848 -0700
|
| +@@ -62,6 +62,13 @@
|
| +
|
| + } // namespace
|
| +
|
| ++void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) {
|
| ++ if (internal::Acquire_Load(once) != ONCE_STATE_DONE) {
|
| ++ internal::FunctionClosure0 func(init_func, false);
|
| ++ GoogleOnceInitImpl(once, &func);
|
| ++ }
|
| ++}
|
| ++
|
| + void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure) {
|
| + internal::AtomicWord state = internal::Acquire_Load(once);
|
| + // Fast path. The provided closure was already executed.
|
| +only in patch2:
|
| +unchanged:
|
| +--- protobuf-cleaned/src/google/protobuf/stubs/once.h 2015-12-30 13:21:46.000000000 -0800
|
| ++++ protobuf-patched/src/google/protobuf/stubs/once.h 2016-03-31 13:25:35.520013490 -0700
|
| +@@ -122,12 +122,8 @@
|
| + LIBPROTOBUF_EXPORT
|
| + void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure);
|
| +
|
| +-inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) {
|
| +- if (internal::Acquire_Load(once) != ONCE_STATE_DONE) {
|
| +- internal::FunctionClosure0 func(init_func, false);
|
| +- GoogleOnceInitImpl(once, &func);
|
| +- }
|
| +-}
|
| ++LIBPROTOBUF_EXPORT
|
| ++void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)());
|
| +
|
| + template <typename Arg>
|
| + inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg*),
|
|
|