emit uses proc based delayed codegen, so it no longer needs schedule argument