private static void EmitPreallocatedBuffer <T>(ICompiler <T> c, int preallocatedBufferSize, int session, MethodInfo getBuffer) { var size = c.Constant(preallocatedBufferSize); var buffer = c.Variable <byte[]>(PreallocatedByteBuffer); var bufferValue = c.Call(getBuffer, session, size); var assignBuffer = c.WriteVar(buffer, bufferValue); c.Emit(assignBuffer); }
public virtual int EmitReadValue([NotNull] ICompiler <ObjectReader> c, int stream, int session, [NotNull] FieldInfo field) { var method = typeof(ValueSerializer).GetTypeInfo().GetMethod(nameof(ReadValue)); var ss = c.Constant(this); var read = c.Call(method, ss, stream, session); read = c.Convert(read, field.FieldType); return(read); }