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*), |