56 * options which specify the version are not passed to the exec'd version,
57 * because that jre may be an older version which wouldn't recognize them.
58 * This environment variable is known to this (and later) version and serves
59 * to suppress the version selection code. This is not only for efficiency,
60 * but also for correctness, since any command line options have been
61 * removed which would cause any value found in the manifest to be used.
62 * This would be incorrect because the command line options are defined
63 * to take precedence.
64 *
65 * The value associated with this environment variable is the MainClass
66 * name from within the executable jar file (if any). This is strictly a
67 * performance enhancement to avoid re-reading the jar file manifest.
68 *
69 */
70 #define ENV_ENTRY "_JAVA_VERSION_SET"
71
72 #define SPLASH_FILE_ENV_ENTRY "_JAVA_SPLASH_FILE"
73 #define SPLASH_JAR_ENV_ENTRY "_JAVA_SPLASH_JAR"
74 #define JDK_JAVA_OPTIONS "JDK_JAVA_OPTIONS"
75
76 /*
77 * Pointers to the needed JNI invocation API, initialized by LoadJavaVM.
78 */
79 typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);
80 typedef jint (JNICALL *GetDefaultJavaVMInitArgs_t)(void *args);
81 typedef jint (JNICALL *GetCreatedJavaVMs_t)(JavaVM **vmBuf, jsize bufLen, jsize *nVMs);
82
83 typedef struct {
84 CreateJavaVM_t CreateJavaVM;
85 GetDefaultJavaVMInitArgs_t GetDefaultJavaVMInitArgs;
86 GetCreatedJavaVMs_t GetCreatedJavaVMs;
87 } InvocationFunctions;
88
89 JNIEXPORT int JNICALL
90 JLI_Launch(int argc, char ** argv, /* main argc, argc */
91 int jargc, const char** jargv, /* java args */
92 int appclassc, const char** appclassv, /* app classpath */
93 const char* fullversion, /* full version defined */
94 const char* dotversion, /* dot version defined */
95 const char* pname, /* program name */
96 const char* lname, /* launcher name */
97 jboolean javaargs, /* JAVA_ARGS */
98 jboolean cpwildcard, /* classpath wildcard */
99 jboolean javaw, /* windows-only javaw */
100 jint ergo_class /* ergnomics policy */
101 );
102
103 /*
104 * Prototypes for launcher functions in the system specific java_md.c.
105 */
106
|
56 * options which specify the version are not passed to the exec'd version,
57 * because that jre may be an older version which wouldn't recognize them.
58 * This environment variable is known to this (and later) version and serves
59 * to suppress the version selection code. This is not only for efficiency,
60 * but also for correctness, since any command line options have been
61 * removed which would cause any value found in the manifest to be used.
62 * This would be incorrect because the command line options are defined
63 * to take precedence.
64 *
65 * The value associated with this environment variable is the MainClass
66 * name from within the executable jar file (if any). This is strictly a
67 * performance enhancement to avoid re-reading the jar file manifest.
68 *
69 */
70 #define ENV_ENTRY "_JAVA_VERSION_SET"
71
72 #define SPLASH_FILE_ENV_ENTRY "_JAVA_SPLASH_FILE"
73 #define SPLASH_JAR_ENV_ENTRY "_JAVA_SPLASH_JAR"
74 #define JDK_JAVA_OPTIONS "JDK_JAVA_OPTIONS"
75
76 #ifdef INCLUDE_TSAN
77 typedef void (*TsanSymbolizeAddFrameFunc)(
78 void *ctx, const char *function, const char *file, int line, int column);
79 typedef void (JNICALL *TsanSymbolize_t)(uint64_t, TsanSymbolizeAddFrameFunc, void *);
80 extern TsanSymbolize_t tsan_symbolize_func;
81 #endif
82
83 /*
84 * Pointers to the needed JNI invocation API, initialized by LoadJavaVM.
85 */
86 typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);
87 typedef jint (JNICALL *GetDefaultJavaVMInitArgs_t)(void *args);
88 typedef jint (JNICALL *GetCreatedJavaVMs_t)(JavaVM **vmBuf, jsize bufLen, jsize *nVMs);
89
90 typedef struct {
91 CreateJavaVM_t CreateJavaVM;
92 GetDefaultJavaVMInitArgs_t GetDefaultJavaVMInitArgs;
93 GetCreatedJavaVMs_t GetCreatedJavaVMs;
94 #ifdef INCLUDE_TSAN
95 TsanSymbolize_t TsanSymbolize;
96 #endif
97 } InvocationFunctions;
98
99 JNIEXPORT int JNICALL
100 JLI_Launch(int argc, char ** argv, /* main argc, argc */
101 int jargc, const char** jargv, /* java args */
102 int appclassc, const char** appclassv, /* app classpath */
103 const char* fullversion, /* full version defined */
104 const char* dotversion, /* dot version defined */
105 const char* pname, /* program name */
106 const char* lname, /* launcher name */
107 jboolean javaargs, /* JAVA_ARGS */
108 jboolean cpwildcard, /* classpath wildcard */
109 jboolean javaw, /* windows-only javaw */
110 jint ergo_class /* ergnomics policy */
111 );
112
113 /*
114 * Prototypes for launcher functions in the system specific java_md.c.
115 */
116
|