|  | @@ -111,6 +111,15 @@ static void interned_slice_unref(grpc_exec_ctx *exec_ctx, void *p) {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static void interned_slice_sub_ref(void *p) {
 | 
	
		
			
				|  |  | +  interned_slice_ref(((char *)p) - offsetof(interned_slice_refcount, sub));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void interned_slice_sub_unref(grpc_exec_ctx *exec_ctx, void *p) {
 | 
	
		
			
				|  |  | +  interned_slice_unref(exec_ctx,
 | 
	
		
			
				|  |  | +                       ((char *)p) - offsetof(interned_slice_refcount, sub));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  static uint32_t interned_slice_hash(grpc_slice slice) {
 | 
	
		
			
				|  |  |    interned_slice_refcount *s = (interned_slice_refcount *)slice.refcount;
 | 
	
		
			
				|  |  |    if (slice.data.refcounted.bytes == (uint8_t *)(s + 1) &&
 | 
	
	
		
			
				|  | @@ -135,6 +144,9 @@ static int interned_slice_eq(grpc_slice a, grpc_slice b) {
 | 
	
		
			
				|  |  |  static const grpc_slice_refcount_vtable interned_slice_vtable = {
 | 
	
		
			
				|  |  |      interned_slice_ref, interned_slice_unref, interned_slice_eq,
 | 
	
		
			
				|  |  |      interned_slice_hash};
 | 
	
		
			
				|  |  | +static const grpc_slice_refcount_vtable interned_slice_sub_vtable = {
 | 
	
		
			
				|  |  | +    interned_slice_sub_ref, interned_slice_sub_unref,
 | 
	
		
			
				|  |  | +    grpc_slice_default_eq_impl, grpc_slice_default_hash_impl};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void grow_shard(slice_shard *shard) {
 | 
	
		
			
				|  |  |    size_t capacity = shard->capacity * 2;
 |