checkExecRedirect(ThreadContext, Ruby, IRubyObject, IRubyObject, PopenExecutor.ExecArg) |   | 13% |   | 11% | 20 | 21 | 49 | 56 | 0 | 1 |
pipeOpen(ThreadContext, PopenExecutor.ExecArg, String, int, IOEncodable) |   | 65% |   | 56% | 23 | 33 | 28 | 90 | 0 | 1 |
execargAddopt(ThreadContext, Ruby, PopenExecutor.ExecArg, IRubyObject, IRubyObject) |   | 33% |   | 28% | 23 | 25 | 43 | 61 | 0 | 1 |
checkExecFds(ThreadContext, Ruby, PopenExecutor.ExecArg) |   | 54% |   | 44% | 6 | 9 | 12 | 32 | 0 | 1 |
run_exec_dup2(Ruby, RubyArray, PopenExecutor.ExecArg, PopenExecutor.ExecArg, String[]) |   | 67% |   | 45% | 15 | 21 | 14 | 44 | 0 | 1 |
execargRunOptions(ThreadContext, Ruby, PopenExecutor.ExecArg, PopenExecutor.ExecArg, String[]) |   | 54% |   | 48% | 16 | 21 | 16 | 41 | 0 | 1 |
procSpawnCmdInternal(Ruby, String[], String, PopenExecutor.ExecArg) |   | 39% |   | 39% | 8 | 10 | 13 | 24 | 0 | 1 |
checkExecRedirectFd(Ruby, IRubyObject, boolean) |   | 34% |   | 32% | 10 | 12 | 13 | 24 | 0 | 1 |
run_exec_open(Ruby, RubyArray, PopenExecutor.ExecArg, PopenExecutor.ExecArg, String[]) |  | 0% |  | 0% | 2 | 2 | 12 | 12 | 1 | 1 |
run_exec_close(Ruby, RubyArray, PopenExecutor.ExecArg, String[]) |  | 0% |  | 0% | 4 | 4 | 8 | 8 | 1 | 1 |
execFillarg(ThreadContext, RubyString, IRubyObject[], IRubyObject, IRubyObject, PopenExecutor.ExecArg) |   | 91% |   | 78% | 18 | 49 | 8 | 84 | 0 | 1 |
checkExecRedirect1(Ruby, IRubyObject, IRubyObject, IRubyObject) |   | 43% |   | 40% | 4 | 6 | 6 | 13 | 0 | 1 |
ARGVSTR2ARGV(byte[][]) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
run_exec_pgroup(Ruby, PopenExecutor.ExecArg, PopenExecutor.ExecArg, String[]) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
spawnProcess(ThreadContext, Ruby, PopenExecutor.ExecArg, String[]) |   | 78% |   | 81% | 3 | 9 | 4 | 21 | 0 | 1 |
checkExecFds1(ThreadContext, Ruby, PopenExecutor.ExecArg, RubyHash, int, IRubyObject) |   | 80% |   | 80% | 4 | 11 | 2 | 18 | 0 | 1 |
popen(ThreadContext, IRubyObject[], RubyClass, Block) |   | 90% |   | 78% | 4 | 13 | 3 | 38 | 0 | 1 |
handleOptionsCommon(ThreadContext, Ruby, PopenExecutor.ExecArg, RubyHash, boolean) |   | 72% |   | 71% | 3 | 8 | 4 | 15 | 0 | 1 |
procSpawnSh(Ruby, PopenExecutor.ExecArg, String, String[]) |   | 78% |   | 50% | 8 | 9 | 5 | 15 | 0 | 1 |
execargFixup(ThreadContext, Ruby, PopenExecutor.ExecArg) |   | 88% |   | 65% | 6 | 11 | 4 | 30 | 0 | 1 |
DO_SPAWN(Ruby, PopenExecutor.ExecArg, String, String[], String[]) |   | 70% |   | 58% | 5 | 7 | 3 | 11 | 0 | 1 |
spawn(ThreadContext, IRubyObject[]) |   | 78% |   | 50% | 3 | 4 | 2 | 13 | 0 | 1 |
redirectClose(Ruby, PopenExecutor.ExecArg, int, boolean) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
checkExecEnv(ThreadContext, Ruby, RubyHash) |   | 85% |   | 62% | 3 | 5 | 1 | 14 | 0 | 1 |
procSpawnSh(Ruby, String, PopenExecutor.ExecArg) |   | 81% |   | 50% | 3 | 4 | 0 | 6 | 0 | 1 |
isPopenFork(Ruby, RubyString) |   | 38% |   | 25% | 2 | 3 | 1 | 3 | 0 | 1 |
redirectOpen(PopenExecutor.ExecArg, int, String, int, int) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
redirectDup(Ruby, int) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
dlnFindExeR(Ruby, String, String) |   | 72% |   | 75% | 1 | 3 | 0 | 3 | 0 | 1 |
run_exec_rlimit(Ruby, RubyArray, PopenExecutor.ExecArg, String[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
execargSetenv(ThreadContext, Ruby, PopenExecutor.ExecArg, IRubyObject) |  | 92% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
saveEnv(ThreadContext, Ruby, PopenExecutor.ExecArg) | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
static {...} |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
execGetargs(ThreadContext, IRubyObject[][], boolean, IRubyObject[]) |  | 100% |  | 100% | 0 | 8 | 0 | 20 | 0 | 1 |
checkArgv(ThreadContext, IRubyObject[]) |  | 100% |  | 100% | 0 | 4 | 0 | 17 | 0 | 1 |
prepareStdioRedirects(Ruby, Channel[], Channel[], PopenExecutor.ExecArg) |  | 100% |  | 100% | 0 | 3 | 0 | 11 | 0 | 1 |
buildEnvp(Ruby, PopenExecutor.ExecArg, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 12 | 0 | 1 |
execargInit(ThreadContext, IRubyObject[], boolean, PopenExecutor.ExecArg) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
checkPipeCommand(ThreadContext, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 10 | 0 | 1 |
run_exec_dup2_child(Ruby, RubyArray, PopenExecutor.ExecArg, PopenExecutor.ExecArg, String[]) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
pipeOpen(ThreadContext, IRubyObject, String, int, IOEncodable) |  | 100% |   | 50% | 1 | 2 | 0 | 5 | 0 | 1 |
spawnInternal(ThreadContext, IRubyObject[], String[]) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
procSpawnCmd(Ruby, String[], String, PopenExecutor.ExecArg) |  | 100% |   | 75% | 1 | 3 | 0 | 4 | 0 | 1 |
execargNew(ThreadContext, IRubyObject[], boolean) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
checkExecOptions(ThreadContext, Ruby, RubyHash, PopenExecutor.ExecArg) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
redirectDup2(PopenExecutor.ExecArg, int, int) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
execargExtractOptions(ThreadContext, Ruby, PopenExecutor.ExecArg, RubyHash) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
PopenExecutor() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
saveRedirectFd(Ruby, int, PopenExecutor.ExecArg, String[]) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
runExecDup2TmpbufSize(int) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |