1 /* |
1 /* |
2 * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. Oracle designates this |
7 * published by the Free Software Foundation. Oracle designates this |
1231 } |
1238 } |
1232 NULL_CHECK0(mid = (*env)->GetStaticMethodID(env, cls, |
1239 NULL_CHECK0(mid = (*env)->GetStaticMethodID(env, cls, |
1233 "checkAndLoadMain", |
1240 "checkAndLoadMain", |
1234 "(ZILjava/lang/String;)Ljava/lang/Class;")); |
1241 "(ZILjava/lang/String;)Ljava/lang/Class;")); |
1235 |
1242 |
1236 str = NewPlatformString(env, name); |
1243 NULL_CHECK0(str = NewPlatformString(env, name)); |
1237 result = (*env)->CallStaticObjectMethod(env, cls, mid, USE_STDERR, mode, str); |
1244 NULL_CHECK0(result = (*env)->CallStaticObjectMethod(env, cls, mid, |
|
1245 USE_STDERR, mode, str)); |
1238 |
1246 |
1239 if (JLI_IsTraceLauncher()) { |
1247 if (JLI_IsTraceLauncher()) { |
1240 end = CounterGet(); |
1248 end = CounterGet(); |
1241 printf("%ld micro seconds to load main class\n", |
1249 printf("%ld micro seconds to load main class\n", |
1242 (long)(jint)Counter2Micros(end-start)); |
1250 (long)(jint)Counter2Micros(end-start)); |
1478 jstring joptString; |
1486 jstring joptString; |
1479 jclass cls = GetLauncherHelperClass(env); |
1487 jclass cls = GetLauncherHelperClass(env); |
1480 NULL_CHECK(cls); |
1488 NULL_CHECK(cls); |
1481 NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls, |
1489 NULL_CHECK(showSettingsID = (*env)->GetStaticMethodID(env, cls, |
1482 "showSettings", "(ZLjava/lang/String;JJJZ)V")); |
1490 "showSettings", "(ZLjava/lang/String;JJJZ)V")); |
1483 joptString = (*env)->NewStringUTF(env, optString); |
1491 NULL_CHECK(joptString = (*env)->NewStringUTF(env, optString)); |
1484 (*env)->CallStaticVoidMethod(env, cls, showSettingsID, |
1492 (*env)->CallStaticVoidMethod(env, cls, showSettingsID, |
1485 USE_STDERR, |
1493 USE_STDERR, |
1486 joptString, |
1494 joptString, |
1487 (jlong)initialHeapSize, |
1495 (jlong)initialHeapSize, |
1488 (jlong)maxHeapSize, |
1496 (jlong)maxHeapSize, |
1519 "appendVmErgoMessage", "(ZLjava/lang/String;)V")); |
1527 "appendVmErgoMessage", "(ZLjava/lang/String;)V")); |
1520 |
1528 |
1521 NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls, |
1529 NULL_CHECK(printHelp = (*env)->GetStaticMethodID(env, cls, |
1522 "printHelpMessage", "(Z)V")); |
1530 "printHelpMessage", "(Z)V")); |
1523 |
1531 |
1524 jprogname = (*env)->NewStringUTF(env, _program_name); |
1532 NULL_CHECK(jprogname = (*env)->NewStringUTF(env, _program_name)); |
1525 |
1533 |
1526 /* Initialize the usage message with the usual preamble */ |
1534 /* Initialize the usage message with the usual preamble */ |
1527 (*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname); |
1535 (*env)->CallStaticVoidMethod(env, cls, initHelp, jprogname); |
|
1536 CHECK_EXCEPTION_RETURN(); |
1528 |
1537 |
1529 |
1538 |
1530 /* Assemble the other variant part of the usage */ |
1539 /* Assemble the other variant part of the usage */ |
1531 if ((knownVMs[0].flag == VM_KNOWN) || |
1540 if ((knownVMs[0].flag == VM_KNOWN) || |
1532 (knownVMs[0].flag == VM_IF_SERVER_CLASS)) { |
1541 (knownVMs[0].flag == VM_IF_SERVER_CLASS)) { |
1533 vm1 = (*env)->NewStringUTF(env, knownVMs[0].name); |
1542 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[0].name)); |
1534 vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1); |
1543 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[0].name+1)); |
1535 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2); |
1544 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2); |
|
1545 CHECK_EXCEPTION_RETURN(); |
1536 } |
1546 } |
1537 for (i=1; i<knownVMsCount; i++) { |
1547 for (i=1; i<knownVMsCount; i++) { |
1538 if (knownVMs[i].flag == VM_KNOWN) { |
1548 if (knownVMs[i].flag == VM_KNOWN) { |
1539 vm1 = (*env)->NewStringUTF(env, knownVMs[i].name); |
1549 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name)); |
1540 vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1); |
1550 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].name+1)); |
1541 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2); |
1551 (*env)->CallStaticVoidMethod(env, cls, vmSelect, vm1, vm2); |
|
1552 CHECK_EXCEPTION_RETURN(); |
1542 } |
1553 } |
1543 } |
1554 } |
1544 for (i=1; i<knownVMsCount; i++) { |
1555 for (i=1; i<knownVMsCount; i++) { |
1545 if (knownVMs[i].flag == VM_ALIASED_TO) { |
1556 if (knownVMs[i].flag == VM_ALIASED_TO) { |
1546 vm1 = (*env)->NewStringUTF(env, knownVMs[i].name); |
1557 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, knownVMs[i].name)); |
1547 vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1); |
1558 NULL_CHECK(vm2 = (*env)->NewStringUTF(env, knownVMs[i].alias+1)); |
1548 (*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2); |
1559 (*env)->CallStaticVoidMethod(env, cls, vmSynonym, vm1, vm2); |
|
1560 CHECK_EXCEPTION_RETURN(); |
1549 } |
1561 } |
1550 } |
1562 } |
1551 |
1563 |
1552 /* The first known VM is the default */ |
1564 /* The first known VM is the default */ |
1553 { |
1565 { |
1556 const char* defaultVM = knownVMs[0].name+1; |
1568 const char* defaultVM = knownVMs[0].name+1; |
1557 if ((knownVMs[0].flag == VM_IF_SERVER_CLASS) && isServerClassMachine) { |
1569 if ((knownVMs[0].flag == VM_IF_SERVER_CLASS) && isServerClassMachine) { |
1558 defaultVM = knownVMs[0].server_class+1; |
1570 defaultVM = knownVMs[0].server_class+1; |
1559 } |
1571 } |
1560 |
1572 |
1561 vm1 = (*env)->NewStringUTF(env, defaultVM); |
1573 NULL_CHECK(vm1 = (*env)->NewStringUTF(env, defaultVM)); |
1562 (*env)->CallStaticVoidMethod(env, cls, vmErgo, isServerClassMachine, vm1); |
1574 (*env)->CallStaticVoidMethod(env, cls, vmErgo, isServerClassMachine, vm1); |
|
1575 CHECK_EXCEPTION_RETURN(); |
1563 } |
1576 } |
1564 |
1577 |
1565 /* Complete the usage message and print to stderr*/ |
1578 /* Complete the usage message and print to stderr*/ |
1566 (*env)->CallStaticVoidMethod(env, cls, printHelp, USE_STDERR); |
1579 (*env)->CallStaticVoidMethod(env, cls, printHelp, USE_STDERR); |
1567 } |
1580 } |