|  | @@ -84,12 +84,12 @@ BENCHMARK(BM_ClosureInitAgainstExecCtx);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureInitAgainstCombiner(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c;
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      benchmark::DoNotOptimize(grpc_closure_init(
 | 
	
		
			
				|  |  | -        &c, DoNothing, NULL, grpc_combiner_scheduler(combiner, false)));
 | 
	
		
			
				|  |  | +        &c, DoNothing, NULL, grpc_combiner_scheduler(combiner)));
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished");
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 | 
	
	
		
			
				|  | @@ -259,10 +259,9 @@ BENCHMARK(BM_TryAcquireSpinlock);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureSchedOnCombiner(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c;
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      grpc_closure_sched(&exec_ctx, &c, GRPC_ERROR_NONE);
 | 
	
	
		
			
				|  | @@ -276,13 +275,11 @@ BENCHMARK(BM_ClosureSchedOnCombiner);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureSched2OnCombiner(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c1;
 | 
	
		
			
				|  |  |    grpc_closure c2;
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c1, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c2, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      grpc_closure_sched(&exec_ctx, &c1, GRPC_ERROR_NONE);
 | 
	
	
		
			
				|  | @@ -297,16 +294,13 @@ BENCHMARK(BM_ClosureSched2OnCombiner);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureSched3OnCombiner(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c1;
 | 
	
		
			
				|  |  |    grpc_closure c2;
 | 
	
		
			
				|  |  |    grpc_closure c3;
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c1, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c2, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c3, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      grpc_closure_sched(&exec_ctx, &c1, GRPC_ERROR_NONE);
 | 
	
	
		
			
				|  | @@ -322,14 +316,12 @@ BENCHMARK(BM_ClosureSched3OnCombiner);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner1 = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner2 = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner1 = grpc_combiner_create();
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner2 = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c1;
 | 
	
		
			
				|  |  |    grpc_closure c2;
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c1, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner1, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c2, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner2, false));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner1));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2));
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      grpc_closure_sched(&exec_ctx, &c1, GRPC_ERROR_NONE);
 | 
	
	
		
			
				|  | @@ -345,20 +337,16 @@ BENCHMARK(BM_ClosureSched2OnTwoCombiners);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner1 = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner2 = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner1 = grpc_combiner_create();
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner2 = grpc_combiner_create();
 | 
	
		
			
				|  |  |    grpc_closure c1;
 | 
	
		
			
				|  |  |    grpc_closure c2;
 | 
	
		
			
				|  |  |    grpc_closure c3;
 | 
	
		
			
				|  |  |    grpc_closure c4;
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c1, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner1, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c2, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner2, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c3, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner1, false));
 | 
	
		
			
				|  |  | -  grpc_closure_init(&c4, DoNothing, NULL,
 | 
	
		
			
				|  |  | -                    grpc_combiner_scheduler(combiner2, false));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c1, DoNothing, NULL, grpc_combiner_scheduler(combiner1));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c2, DoNothing, NULL, grpc_combiner_scheduler(combiner2));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c3, DoNothing, NULL, grpc_combiner_scheduler(combiner1));
 | 
	
		
			
				|  |  | +  grpc_closure_init(&c4, DoNothing, NULL, grpc_combiner_scheduler(combiner2));
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  |      grpc_closure_sched(&exec_ctx, &c1, GRPC_ERROR_NONE);
 | 
	
	
		
			
				|  | @@ -418,8 +406,8 @@ BENCHMARK(BM_ClosureReschedOnExecCtx);
 | 
	
		
			
				|  |  |  static void BM_ClosureReschedOnCombiner(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | -  Rescheduler r(state, grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  | +  Rescheduler r(state, grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  |    r.ScheduleFirst(&exec_ctx);
 | 
	
		
			
				|  |  |    grpc_exec_ctx_flush(&exec_ctx);
 | 
	
		
			
				|  |  |    GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished");
 | 
	
	
		
			
				|  | @@ -431,10 +419,10 @@ BENCHMARK(BM_ClosureReschedOnCombiner);
 | 
	
		
			
				|  |  |  static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) {
 | 
	
		
			
				|  |  |    TrackCounters track_counters;
 | 
	
		
			
				|  |  |    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
		
			
				|  |  | -  grpc_combiner* combiner = grpc_combiner_create(NULL);
 | 
	
		
			
				|  |  | -  Rescheduler r(state, grpc_combiner_finally_scheduler(combiner, false));
 | 
	
		
			
				|  |  | -  r.ScheduleFirstAgainstDifferentScheduler(
 | 
	
		
			
				|  |  | -      &exec_ctx, grpc_combiner_scheduler(combiner, false));
 | 
	
		
			
				|  |  | +  grpc_combiner* combiner = grpc_combiner_create();
 | 
	
		
			
				|  |  | +  Rescheduler r(state, grpc_combiner_finally_scheduler(combiner));
 | 
	
		
			
				|  |  | +  r.ScheduleFirstAgainstDifferentScheduler(&exec_ctx,
 | 
	
		
			
				|  |  | +                                           grpc_combiner_scheduler(combiner));
 | 
	
		
			
				|  |  |    grpc_exec_ctx_flush(&exec_ctx);
 | 
	
		
			
				|  |  |    GRPC_COMBINER_UNREF(&exec_ctx, combiner, "finished");
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 |