Skip to content
Snippets Groups Projects
Commit b58de723 authored by Craig Tiller's avatar Craig Tiller
Browse files

Lazily allocate batch control objects

parent 18cf1575
Branches
Tags
No related merge requests found
...@@ -163,7 +163,7 @@ struct grpc_call { ...@@ -163,7 +163,7 @@ struct grpc_call {
/* have we received initial metadata */ /* have we received initial metadata */
bool has_initial_md_been_received; bool has_initial_md_been_received;
batch_control active_batches[MAX_CONCURRENT_BATCHES]; batch_control *active_batches[MAX_CONCURRENT_BATCHES];
grpc_transport_stream_op_payload stream_op_payload; grpc_transport_stream_op_payload stream_op_payload;
/* first idx: is_receiving, second idx: is_trailing */ /* first idx: is_receiving, second idx: is_trailing */
...@@ -1022,7 +1022,11 @@ static batch_control *allocate_batch_control(grpc_call *call, ...@@ -1022,7 +1022,11 @@ static batch_control *allocate_batch_control(grpc_call *call,
const grpc_op *ops, const grpc_op *ops,
size_t num_ops) { size_t num_ops) {
int slot = batch_slot_for_op(ops[0].op); int slot = batch_slot_for_op(ops[0].op);
batch_control *bctl = &call->active_batches[slot]; batch_control **pslot = &call->active_batches[slot];
if (*pslot == NULL) {
*pslot = gpr_arena_alloc(call->arena, sizeof(batch_control));
}
batch_control *bctl = *pslot;
if (bctl->call != NULL) { if (bctl->call != NULL) {
return NULL; return NULL;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment