aboutsummaryrefslogtreecommitdiff
path: root/objectivec/GPBUtilities.m
diff options
context:
space:
mode:
authorThomas Van Lenten <thomasvl@google.com>2016-03-21 11:11:14 -0400
committerThomas Van Lenten <thomasvl@google.com>2016-03-21 11:11:14 -0400
commitbd41a39f693d8307d407e42b634b315e075b6c8f (patch)
tree018b7755a546f18ee54e3fc48d6f8c69fdbcc67d /objectivec/GPBUtilities.m
parent5e933847cc9e7826f1a9ee8b3dc1df4960b1ea5d (diff)
downloadprotobuf-bd41a39f693d8307d407e42b634b315e075b6c8f.tar.gz
protobuf-bd41a39f693d8307d407e42b634b315e075b6c8f.tar.bz2
protobuf-bd41a39f693d8307d407e42b634b315e075b6c8f.zip
Only create the readonlySemaphore on demand.
This will lower the amount of dispatch_semaphores created per Message when the full object tree isn't walked in a way that would require them to be created. Uses a dispatch_once_t for one time init of the dispatch_semaphore.
Diffstat (limited to 'objectivec/GPBUtilities.m')
-rw-r--r--objectivec/GPBUtilities.m1
1 files changed, 1 insertions, 0 deletions
diff --git a/objectivec/GPBUtilities.m b/objectivec/GPBUtilities.m
index 3e9d11c0..447c749a 100644
--- a/objectivec/GPBUtilities.m
+++ b/objectivec/GPBUtilities.m
@@ -412,6 +412,7 @@ id GPBGetObjectIvarWithField(GPBMessage *self, GPBFieldDescriptor *field) {
return field.defaultValue.valueMessage;
}
+ GPBPrepareReadOnlySemaphore(self);
dispatch_semaphore_wait(self->readOnlySemaphore_, DISPATCH_TIME_FOREVER);
GPBMessage *result = GPBGetObjectIvarWithFieldNoAutocreate(self, field);
if (!result) {