int
main(int argc, char **argv)
{
int margc;
char** margv;
const jboolean const_javaw = JNI_FALSE;
#endif /* JAVAW */
#ifdef _WIN32
{
int i = 0;
if (getenv(JLDEBUG_ENV_ENTRY) != NULL) {
printf("Windows original main args:\n");
for (i = 0 ; i < __argc ; i++) {
printf("wwwd_args[%d] = %s\n", i, __argv[i]);
}
}
}
JLI_CmdToArgs(GetCommandLine());
margc = JLI_GetStdArgc();
// add one more to mark the end
margv = (char **)JLI_MemAlloc((margc + 1) * (sizeof(char *)));
{
int i = 0;
StdArg *stdargs = JLI_GetStdArgs();
for (i = 0 ; i < margc ; i++) {
margv[i] = stdargs[i].arg;
}
margv[i] = NULL;
}
#else /* *NIXES */
margc = argc;
margv = argv;
#endif /* WIN32 */
return JLI_Launch(margc, margv,
sizeof(const_jargs) / sizeof(char *), const_jargs,
sizeof(const_appclasspath) / sizeof(char *), const_appclasspath,
FULL_VERSION,
DOT_VERSION,
(const_progname != NULL) ? const_progname : *margv,
(const_launcher != NULL) ? const_launcher : *margv,
(const_jargs != NULL) ? JNI_TRUE : JNI_FALSE,
const_cpwildcard, const_javaw, const_ergo_class);
}
Dump of assembler code for function main:
0x0000561c07a56890 <+0>: push %rbp
0x0000561c07a56891 <+1>: mov %rsp,%rbp
0x0000561c07a56894 <+4>: push %rbx
0x0000561c07a56895 <+5>: sub $0x28,%rsp
0x0000561c07a56899 <+9>: mov %edi,-0x24(%rbp)
0x0000561c07a5689c <+12>: mov %rsi,-0x30(%rbp)
0x0000561c07a568a0 <+16>: movb $0x0,-0x1d(%rbp)
0x0000561c07a568a4 <+20>: mov -0x24(%rbp),%eax
0x0000561c07a568a7 <+23>: mov %eax,-0x1c(%rbp)
0x0000561c07a568aa <+26>: mov -0x30(%rbp),%rax
0x0000561c07a568ae <+30>: mov %rax,-0x18(%rbp)
0x0000561c07a568b2 <+34>: mov $0x0,%ebx
0x0000561c07a568b7 <+39>: movzbl -0x1d(%rbp),%r10d
0x0000561c07a568bc <+44>: mov $0x1,%eax
=> 0x0000561c07a568c1 <+49>: movzbl %al,%r9d
0x0000561c07a568c5 <+53>: mov 0x2007b4(%rip),%rax # 0x561c07c57080 <const_jargs>
0x0000561c07a568cc <+60>: test %rax,%rax
0x0000561c07a568cf <+63>: setne %al
0x0000561c07a568d2 <+66>: movzbl %al,%r8d
0x0000561c07a568d6 <+70>: mov 0x200793(%rip),%rax # 0x561c07c57070 <const_launcher>
0x0000561c07a568dd <+77>: test %rax,%rax
0x0000561c07a568e0 <+80>: jne 0x561c07a568eb <main+91>
0x0000561c07a568e2 <+82>: mov -0x18(%rbp),%rax
0x0000561c07a568e6 <+86>: mov (%rax),%rdx
0x0000561c07a568e9 <+89>: jmp 0x561c07a568f2 <main+98>
0x0000561c07a568eb <+91>: mov 0x20077e(%rip),%rdx # 0x561c07c57070 <const_launcher>
0x0000561c07a568f2 <+98>: mov 0x20076f(%rip),%rax # 0x561c07c57068 <const_progname>
0x0000561c07a568f9 <+105>: test %rax,%rax
0x0000561c07a568fc <+108>: jne 0x561c07a56907 <main+119>
0x0000561c07a568fe <+110>: mov -0x18(%rbp),%rax
0x0000561c07a56902 <+114>: mov (%rax),%rax
0x0000561c07a56905 <+117>: jmp 0x561c07a5690e <main+126>
0x0000561c07a56907 <+119>: mov 0x20075a(%rip),%rax # 0x561c07c57068 <const_progname>
0x0000561c07a5690e <+126>: mov 0x200773(%rip),%r11 # 0x561c07c57088 <const_appclasspath>
0x0000561c07a56915 <+133>: mov 0x200764(%rip),%rcx # 0x561c07c57080 <const_jargs>
0x0000561c07a5691c <+140>: mov -0x18(%rbp),%rsi
0x0000561c07a56920 <+144>: mov -0x1c(%rbp),%edi
0x0000561c07a56923 <+147>: push %rbx
0x0000561c07a56924 <+148>: push %r10
0x0000561c07a56926 <+150>: push %r9
0x0000561c07a56928 <+152>: push %r8
0x0000561c07a5692a <+154>: push %rdx
0x0000561c07a5692b <+155>: push %rax
0x0000561c07a5692c <+156>: lea 0xf5(%rip),%rax # 0x561c07a56a28
0x0000561c07a56933 <+163>: push %rax
0x0000561c07a56934 <+164>: lea 0xf5(%rip),%rax # 0x561c07a56a30
0x0000561c07a5693b <+171>: push %rax
0x0000561c07a5693c <+172>: mov %r11,%r9
0x0000561c07a5693f <+175>: mov $0x1,%r8d