|  | @@ -22,6 +22,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include <grpc/support/log.h>
 | 
	
		
			
				|  |  |  #include "src/core/lib/debug/stats.h"
 | 
	
		
			
				|  |  | +#include "src/core/lib/profiling/timers.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  grpc_tracer_flag grpc_call_combiner_trace =
 | 
	
		
			
				|  |  |      GRPC_TRACER_INITIALIZER(false, "call_combiner");
 | 
	
	
		
			
				|  | @@ -61,6 +62,7 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
 | 
	
		
			
				|  |  |                                grpc_closure* closure,
 | 
	
		
			
				|  |  |                                grpc_error* error DEBUG_ARGS,
 | 
	
		
			
				|  |  |                                const char* reason) {
 | 
	
		
			
				|  |  | +  GPR_TIMER_BEGIN("call_combiner_start", 0);
 | 
	
		
			
				|  |  |    if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
 | 
	
		
			
				|  |  |      gpr_log(GPR_DEBUG,
 | 
	
		
			
				|  |  |              "==> grpc_call_combiner_start() [%p] closure=%p [" DEBUG_FMT_STR
 | 
	
	
		
			
				|  | @@ -77,6 +79,7 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
 | 
	
		
			
				|  |  |    GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx);
 | 
	
		
			
				|  |  |    if (prev_size == 0) {
 | 
	
		
			
				|  |  |      GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(exec_ctx);
 | 
	
		
			
				|  |  | +    GPR_TIMER_MARK("call_combiner_initiate", 0);
 | 
	
		
			
				|  |  |      if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
 | 
	
		
			
				|  |  |        gpr_log(GPR_DEBUG, "  EXECUTING IMMEDIATELY");
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -90,11 +93,13 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
 | 
	
		
			
				|  |  |      closure->error_data.error = error;
 | 
	
		
			
				|  |  |      gpr_mpscq_push(&call_combiner->queue, (gpr_mpscq_node*)closure);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  GPR_TIMER_END("call_combiner_start", 0);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
 | 
	
		
			
				|  |  |                               grpc_call_combiner* call_combiner DEBUG_ARGS,
 | 
	
		
			
				|  |  |                               const char* reason) {
 | 
	
		
			
				|  |  | +  GPR_TIMER_BEGIN("call_combiner_stop", 0);
 | 
	
		
			
				|  |  |    if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
 | 
	
		
			
				|  |  |      gpr_log(GPR_DEBUG,
 | 
	
		
			
				|  |  |              "==> grpc_call_combiner_stop() [%p] [" DEBUG_FMT_STR "%s]",
 | 
	
	
		
			
				|  | @@ -133,6 +138,7 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
 | 
	
		
			
				|  |  |    } else if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
 | 
	
		
			
				|  |  |      gpr_log(GPR_DEBUG, "  queue empty");
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  GPR_TIMER_END("call_combiner_stop", 0);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
 |