108 assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
109 return Handle(Thread::current(), arg);
110 }
111
112 jobjectArray readConfiguration0(JNIEnv *env, TRAPS);
113
114 C2V_VMENTRY(jobjectArray, readConfiguration, (JNIEnv *env))
115 jobjectArray config = readConfiguration0(env, CHECK_NULL);
116 return config;
117 C2V_END
118
119 C2V_VMENTRY(jobject, getFlagValue, (JNIEnv *, jobject c2vm, jobject name_handle))
120 #define RETURN_BOXED_LONG(value) oop box; jvalue p; p.j = (jlong) (value); box = java_lang_boxing_object::create(T_LONG, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box);
121 #define RETURN_BOXED_DOUBLE(value) oop box; jvalue p; p.d = (jdouble) (value); box = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box);
122 Handle name(THREAD, JNIHandles::resolve(name_handle));
123 if (name.is_null()) {
124 THROW_0(vmSymbols::java_lang_NullPointerException());
125 }
126 ResourceMark rm;
127 const char* cstring = java_lang_String::as_utf8_string(name());
128 Flag* flag = Flag::find_flag(cstring, strlen(cstring), /* allow_locked */ true, /* return_flag */ true);
129 if (flag == NULL) {
130 return c2vm;
131 }
132 if (flag->is_bool()) {
133 jvalue prim;
134 prim.z = flag->get_bool();
135 oop box = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK_NULL);
136 return JNIHandles::make_local(THREAD, box);
137 } else if (flag->is_ccstr()) {
138 Handle value = java_lang_String::create_from_str(flag->get_ccstr(), CHECK_NULL);
139 return JNIHandles::make_local(THREAD, value());
140 } else if (flag->is_intx()) {
141 RETURN_BOXED_LONG(flag->get_intx());
142 } else if (flag->is_int()) {
143 RETURN_BOXED_LONG(flag->get_int());
144 } else if (flag->is_uint()) {
145 RETURN_BOXED_LONG(flag->get_uint());
146 } else if (flag->is_uint64_t()) {
147 RETURN_BOXED_LONG(flag->get_uint64_t());
148 } else if (flag->is_size_t()) {
|
108 assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
109 return Handle(Thread::current(), arg);
110 }
111
112 jobjectArray readConfiguration0(JNIEnv *env, TRAPS);
113
114 C2V_VMENTRY(jobjectArray, readConfiguration, (JNIEnv *env))
115 jobjectArray config = readConfiguration0(env, CHECK_NULL);
116 return config;
117 C2V_END
118
119 C2V_VMENTRY(jobject, getFlagValue, (JNIEnv *, jobject c2vm, jobject name_handle))
120 #define RETURN_BOXED_LONG(value) oop box; jvalue p; p.j = (jlong) (value); box = java_lang_boxing_object::create(T_LONG, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box);
121 #define RETURN_BOXED_DOUBLE(value) oop box; jvalue p; p.d = (jdouble) (value); box = java_lang_boxing_object::create(T_DOUBLE, &p, CHECK_NULL); return JNIHandles::make_local(THREAD, box);
122 Handle name(THREAD, JNIHandles::resolve(name_handle));
123 if (name.is_null()) {
124 THROW_0(vmSymbols::java_lang_NullPointerException());
125 }
126 ResourceMark rm;
127 const char* cstring = java_lang_String::as_utf8_string(name());
128 JVMFlag* flag = JVMFlag::find_flag(cstring, strlen(cstring), /* allow_locked */ true, /* return_flag */ true);
129 if (flag == NULL) {
130 return c2vm;
131 }
132 if (flag->is_bool()) {
133 jvalue prim;
134 prim.z = flag->get_bool();
135 oop box = java_lang_boxing_object::create(T_BOOLEAN, &prim, CHECK_NULL);
136 return JNIHandles::make_local(THREAD, box);
137 } else if (flag->is_ccstr()) {
138 Handle value = java_lang_String::create_from_str(flag->get_ccstr(), CHECK_NULL);
139 return JNIHandles::make_local(THREAD, value());
140 } else if (flag->is_intx()) {
141 RETURN_BOXED_LONG(flag->get_intx());
142 } else if (flag->is_int()) {
143 RETURN_BOXED_LONG(flag->get_int());
144 } else if (flag->is_uint()) {
145 RETURN_BOXED_LONG(flag->get_uint());
146 } else if (flag->is_uint64_t()) {
147 RETURN_BOXED_LONG(flag->get_uint64_t());
148 } else if (flag->is_size_t()) {
|