comparison src/share/vm/prims/jvm.cpp @ 1142:4ce7240d622c

6914300: ciEnv should export all well known classes Reviewed-by: kvn, twisti
author never
date Wed, 06 Jan 2010 14:22:39 -0800
parents 389049f3f393
children 9b9c1ee9b3f6
comparison
equal deleted inserted replaced
1140:1f6d42899c3a 1142:4ce7240d622c
78 78
79 methodOop last_caller = NULL; 79 methodOop last_caller = NULL;
80 80
81 while (!vfst.at_end()) { 81 while (!vfst.at_end()) {
82 methodOop m = vfst.method(); 82 methodOop m = vfst.method();
83 if (!vfst.method()->method_holder()->klass_part()->is_subclass_of(SystemDictionary::classloader_klass())&& 83 if (!vfst.method()->method_holder()->klass_part()->is_subclass_of(SystemDictionary::ClassLoader_klass())&&
84 !vfst.method()->method_holder()->klass_part()->is_subclass_of(access_controller_klass) && 84 !vfst.method()->method_holder()->klass_part()->is_subclass_of(access_controller_klass) &&
85 !vfst.method()->method_holder()->klass_part()->is_subclass_of(privileged_action_klass)) { 85 !vfst.method()->method_holder()->klass_part()->is_subclass_of(privileged_action_klass)) {
86 break; 86 break;
87 } 87 }
88 last_caller = m; 88 last_caller = m;
255 HandleMark hm(THREAD); 255 HandleMark hm(THREAD);
256 Handle key_str = java_lang_String::create_from_platform_dependent_str(key, CHECK); 256 Handle key_str = java_lang_String::create_from_platform_dependent_str(key, CHECK);
257 Handle value_str = java_lang_String::create_from_platform_dependent_str((value != NULL ? value : ""), CHECK); 257 Handle value_str = java_lang_String::create_from_platform_dependent_str((value != NULL ? value : ""), CHECK);
258 JavaCalls::call_virtual(&r, 258 JavaCalls::call_virtual(&r,
259 props, 259 props,
260 KlassHandle(THREAD, SystemDictionary::properties_klass()), 260 KlassHandle(THREAD, SystemDictionary::Properties_klass()),
261 vmSymbolHandles::put_name(), 261 vmSymbolHandles::put_name(),
262 vmSymbolHandles::object_object_object_signature(), 262 vmSymbolHandles::object_object_object_signature(),
263 key_str, 263 key_str,
264 value_str, 264 value_str,
265 THREAD); 265 THREAD);
493 // Just checking that the cloneable flag is set correct 493 // Just checking that the cloneable flag is set correct
494 if (obj->is_javaArray()) { 494 if (obj->is_javaArray()) {
495 guarantee(klass->is_cloneable(), "all arrays are cloneable"); 495 guarantee(klass->is_cloneable(), "all arrays are cloneable");
496 } else { 496 } else {
497 guarantee(obj->is_instance(), "should be instanceOop"); 497 guarantee(obj->is_instance(), "should be instanceOop");
498 bool cloneable = klass->is_subtype_of(SystemDictionary::cloneable_klass()); 498 bool cloneable = klass->is_subtype_of(SystemDictionary::Cloneable_klass());
499 guarantee(cloneable == klass->is_cloneable(), "incorrect cloneable flag"); 499 guarantee(cloneable == klass->is_cloneable(), "incorrect cloneable flag");
500 } 500 }
501 #endif 501 #endif
502 502
503 // Check if class of obj supports the Cloneable interface. 503 // Check if class of obj supports the Cloneable interface.
906 oop mirror = JNIHandles::resolve_non_null(cls); 906 oop mirror = JNIHandles::resolve_non_null(cls);
907 907
908 // Special handling for primitive objects 908 // Special handling for primitive objects
909 if (java_lang_Class::is_primitive(mirror)) { 909 if (java_lang_Class::is_primitive(mirror)) {
910 // Primitive objects does not have any interfaces 910 // Primitive objects does not have any interfaces
911 objArrayOop r = oopFactory::new_objArray(SystemDictionary::class_klass(), 0, CHECK_NULL); 911 objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_NULL);
912 return (jobjectArray) JNIHandles::make_local(env, r); 912 return (jobjectArray) JNIHandles::make_local(env, r);
913 } 913 }
914 914
915 KlassHandle klass(thread, java_lang_Class::as_klassOop(mirror)); 915 KlassHandle klass(thread, java_lang_Class::as_klassOop(mirror));
916 // Figure size of result array 916 // Figure size of result array
921 assert(klass->oop_is_objArray() || klass->oop_is_typeArray(), "Illegal mirror klass"); 921 assert(klass->oop_is_objArray() || klass->oop_is_typeArray(), "Illegal mirror klass");
922 size = 2; 922 size = 2;
923 } 923 }
924 924
925 // Allocate result array 925 // Allocate result array
926 objArrayOop r = oopFactory::new_objArray(SystemDictionary::class_klass(), size, CHECK_NULL); 926 objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), size, CHECK_NULL);
927 objArrayHandle result (THREAD, r); 927 objArrayHandle result (THREAD, r);
928 // Fill in result 928 // Fill in result
929 if (klass->oop_is_instance()) { 929 if (klass->oop_is_instance()) {
930 // Regular instance klass, fill in all local interfaces 930 // Regular instance klass, fill in all local interfaces
931 for (int index = 0; index < size; index++) { 931 for (int index = 0; index < size; index++) {
932 klassOop k = klassOop(instanceKlass::cast(klass())->local_interfaces()->obj_at(index)); 932 klassOop k = klassOop(instanceKlass::cast(klass())->local_interfaces()->obj_at(index));
933 result->obj_at_put(index, Klass::cast(k)->java_mirror()); 933 result->obj_at_put(index, Klass::cast(k)->java_mirror());
934 } 934 }
935 } else { 935 } else {
936 // All arrays implement java.lang.Cloneable and java.io.Serializable 936 // All arrays implement java.lang.Cloneable and java.io.Serializable
937 result->obj_at_put(0, Klass::cast(SystemDictionary::cloneable_klass())->java_mirror()); 937 result->obj_at_put(0, Klass::cast(SystemDictionary::Cloneable_klass())->java_mirror());
938 result->obj_at_put(1, Klass::cast(SystemDictionary::serializable_klass())->java_mirror()); 938 result->obj_at_put(1, Klass::cast(SystemDictionary::Serializable_klass())->java_mirror());
939 } 939 }
940 return (jobjectArray) JNIHandles::make_local(env, result()); 940 return (jobjectArray) JNIHandles::make_local(env, result());
941 JVM_END 941 JVM_END
942 942
943 943
1096 1096
1097 if (HAS_PENDING_EXCEPTION) { 1097 if (HAS_PENDING_EXCEPTION) {
1098 pending_exception = Handle(THREAD, PENDING_EXCEPTION); 1098 pending_exception = Handle(THREAD, PENDING_EXCEPTION);
1099 CLEAR_PENDING_EXCEPTION; 1099 CLEAR_PENDING_EXCEPTION;
1100 1100
1101 if ( pending_exception->is_a(SystemDictionary::exception_klass()) && 1101 if ( pending_exception->is_a(SystemDictionary::Exception_klass()) &&
1102 !pending_exception->is_a(SystemDictionary::runtime_exception_klass())) { 1102 !pending_exception->is_a(SystemDictionary::RuntimeException_klass())) {
1103 // Throw a java.security.PrivilegedActionException(Exception e) exception 1103 // Throw a java.security.PrivilegedActionException(Exception e) exception
1104 JavaCallArguments args(pending_exception); 1104 JavaCallArguments args(pending_exception);
1105 THROW_ARG_0(vmSymbolHandles::java_security_PrivilegedActionException(), 1105 THROW_ARG_0(vmSymbolHandles::java_security_PrivilegedActionException(),
1106 vmSymbolHandles::exception_void_signature(), 1106 vmSymbolHandles::exception_void_signature(),
1107 &args); 1107 &args);
1188 return JNIHandles::make_local(env, result); 1188 return JNIHandles::make_local(env, result);
1189 } 1189 }
1190 1190
1191 // the resource area must be registered in case of a gc 1191 // the resource area must be registered in case of a gc
1192 RegisterArrayForGC ragc(thread, local_array); 1192 RegisterArrayForGC ragc(thread, local_array);
1193 objArrayOop context = oopFactory::new_objArray(SystemDictionary::protectionDomain_klass(), 1193 objArrayOop context = oopFactory::new_objArray(SystemDictionary::ProtectionDomain_klass(),
1194 local_array->length(), CHECK_NULL); 1194 local_array->length(), CHECK_NULL);
1195 objArrayHandle h_context(thread, context); 1195 objArrayHandle h_context(thread, context);
1196 for (int index = 0; index < local_array->length(); index++) { 1196 for (int index = 0; index < local_array->length(); index++) {
1197 h_context->obj_at_put(index, local_array->at(index)); 1197 h_context->obj_at_put(index, local_array->at(index));
1198 } 1198 }
1249 // ofClass is a reference to a java_lang_Class object. The mirror object 1249 // ofClass is a reference to a java_lang_Class object. The mirror object
1250 // of an instanceKlass 1250 // of an instanceKlass
1251 1251
1252 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) || 1252 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) ||
1253 ! Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) { 1253 ! Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) {
1254 oop result = oopFactory::new_objArray(SystemDictionary::class_klass(), 0, CHECK_NULL); 1254 oop result = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_NULL);
1255 return (jobjectArray)JNIHandles::make_local(env, result); 1255 return (jobjectArray)JNIHandles::make_local(env, result);
1256 } 1256 }
1257 1257
1258 instanceKlassHandle k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))); 1258 instanceKlassHandle k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
1259 1259
1260 if (k->inner_classes()->length() == 0) { 1260 if (k->inner_classes()->length() == 0) {
1261 // Neither an inner nor outer class 1261 // Neither an inner nor outer class
1262 oop result = oopFactory::new_objArray(SystemDictionary::class_klass(), 0, CHECK_NULL); 1262 oop result = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_NULL);
1263 return (jobjectArray)JNIHandles::make_local(env, result); 1263 return (jobjectArray)JNIHandles::make_local(env, result);
1264 } 1264 }
1265 1265
1266 // find inner class info 1266 // find inner class info
1267 typeArrayHandle icls(thread, k->inner_classes()); 1267 typeArrayHandle icls(thread, k->inner_classes());
1268 constantPoolHandle cp(thread, k->constants()); 1268 constantPoolHandle cp(thread, k->constants());
1269 int length = icls->length(); 1269 int length = icls->length();
1270 1270
1271 // Allocate temp. result array 1271 // Allocate temp. result array
1272 objArrayOop r = oopFactory::new_objArray(SystemDictionary::class_klass(), length/4, CHECK_NULL); 1272 objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), length/4, CHECK_NULL);
1273 objArrayHandle result (THREAD, r); 1273 objArrayHandle result (THREAD, r);
1274 int members = 0; 1274 int members = 0;
1275 1275
1276 for(int i = 0; i < length; i += 4) { 1276 for(int i = 0; i < length; i += 4) {
1277 int ioff = icls->ushort_at(i + inner_class_info_index); 1277 int ioff = icls->ushort_at(i + inner_class_info_index);
1297 } 1297 }
1298 } 1298 }
1299 1299
1300 if (members != length) { 1300 if (members != length) {
1301 // Return array of right length 1301 // Return array of right length
1302 objArrayOop res = oopFactory::new_objArray(SystemDictionary::class_klass(), members, CHECK_NULL); 1302 objArrayOop res = oopFactory::new_objArray(SystemDictionary::Class_klass(), members, CHECK_NULL);
1303 for(int i = 0; i < members; i++) { 1303 for(int i = 0; i < members; i++) {
1304 res->obj_at_put(i, result->obj_at(i)); 1304 res->obj_at_put(i, result->obj_at(i));
1305 } 1305 }
1306 return (jobjectArray)JNIHandles::make_local(env, res); 1306 return (jobjectArray)JNIHandles::make_local(env, res);
1307 } 1307 }
1471 1471
1472 oop reflected = JNIHandles::resolve_non_null(method); 1472 oop reflected = JNIHandles::resolve_non_null(method);
1473 oop mirror = NULL; 1473 oop mirror = NULL;
1474 int slot = 0; 1474 int slot = 0;
1475 1475
1476 if (reflected->klass() == SystemDictionary::reflect_constructor_klass()) { 1476 if (reflected->klass() == SystemDictionary::reflect_Constructor_klass()) {
1477 mirror = java_lang_reflect_Constructor::clazz(reflected); 1477 mirror = java_lang_reflect_Constructor::clazz(reflected);
1478 slot = java_lang_reflect_Constructor::slot(reflected); 1478 slot = java_lang_reflect_Constructor::slot(reflected);
1479 } else { 1479 } else {
1480 assert(reflected->klass() == SystemDictionary::reflect_method_klass(), 1480 assert(reflected->klass() == SystemDictionary::reflect_Method_klass(),
1481 "wrong type"); 1481 "wrong type");
1482 mirror = java_lang_reflect_Method::clazz(reflected); 1482 mirror = java_lang_reflect_Method::clazz(reflected);
1483 slot = java_lang_reflect_Method::slot(reflected); 1483 slot = java_lang_reflect_Method::slot(reflected);
1484 } 1484 }
1485 klassOop k = java_lang_Class::as_klassOop(mirror); 1485 klassOop k = java_lang_Class::as_klassOop(mirror);
1531 1531
1532 // Exclude primitive types and array types 1532 // Exclude primitive types and array types
1533 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) || 1533 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) ||
1534 Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) { 1534 Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
1535 // Return empty array 1535 // Return empty array
1536 oop res = oopFactory::new_objArray(SystemDictionary::reflect_field_klass(), 0, CHECK_NULL); 1536 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), 0, CHECK_NULL);
1537 return (jobjectArray) JNIHandles::make_local(env, res); 1537 return (jobjectArray) JNIHandles::make_local(env, res);
1538 } 1538 }
1539 1539
1540 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))); 1540 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
1541 constantPoolHandle cp(THREAD, k->constants()); 1541 constantPoolHandle cp(THREAD, k->constants());
1559 if (mods & JVM_ACC_PUBLIC) ++num_fields; 1559 if (mods & JVM_ACC_PUBLIC) ++num_fields;
1560 } 1560 }
1561 } else { 1561 } else {
1562 num_fields = fields_len / instanceKlass::next_offset; 1562 num_fields = fields_len / instanceKlass::next_offset;
1563 1563
1564 if (k() == SystemDictionary::throwable_klass()) { 1564 if (k() == SystemDictionary::Throwable_klass()) {
1565 num_fields--; 1565 num_fields--;
1566 skip_backtrace = true; 1566 skip_backtrace = true;
1567 } 1567 }
1568 } 1568 }
1569 1569
1570 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_field_klass(), num_fields, CHECK_NULL); 1570 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), num_fields, CHECK_NULL);
1571 objArrayHandle result (THREAD, r); 1571 objArrayHandle result (THREAD, r);
1572 1572
1573 int out_idx = 0; 1573 int out_idx = 0;
1574 fieldDescriptor fd; 1574 fieldDescriptor fd;
1575 for (int i = 0; i < fields_len; i += instanceKlass::next_offset) { 1575 for (int i = 0; i < fields_len; i += instanceKlass::next_offset) {
1599 1599
1600 // Exclude primitive types and array types 1600 // Exclude primitive types and array types
1601 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) 1601 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
1602 || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) { 1602 || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
1603 // Return empty array 1603 // Return empty array
1604 oop res = oopFactory::new_objArray(SystemDictionary::reflect_method_klass(), 0, CHECK_NULL); 1604 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), 0, CHECK_NULL);
1605 return (jobjectArray) JNIHandles::make_local(env, res); 1605 return (jobjectArray) JNIHandles::make_local(env, res);
1606 } 1606 }
1607 1607
1608 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))); 1608 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
1609 1609
1623 } 1623 }
1624 } 1624 }
1625 } 1625 }
1626 1626
1627 // Allocate result 1627 // Allocate result
1628 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_method_klass(), num_methods, CHECK_NULL); 1628 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), num_methods, CHECK_NULL);
1629 objArrayHandle result (THREAD, r); 1629 objArrayHandle result (THREAD, r);
1630 1630
1631 int out_idx = 0; 1631 int out_idx = 0;
1632 for (i = 0; i < methods_length; i++) { 1632 for (i = 0; i < methods_length; i++) {
1633 methodHandle method(THREAD, (methodOop) methods->obj_at(i)); 1633 methodHandle method(THREAD, (methodOop) methods->obj_at(i));
1651 1651
1652 // Exclude primitive types and array types 1652 // Exclude primitive types and array types
1653 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) 1653 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
1654 || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) { 1654 || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
1655 // Return empty array 1655 // Return empty array
1656 oop res = oopFactory::new_objArray(SystemDictionary::reflect_constructor_klass(), 0 , CHECK_NULL); 1656 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Constructor_klass(), 0 , CHECK_NULL);
1657 return (jobjectArray) JNIHandles::make_local(env, res); 1657 return (jobjectArray) JNIHandles::make_local(env, res);
1658 } 1658 }
1659 1659
1660 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))); 1660 instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
1661 1661
1675 } 1675 }
1676 } 1676 }
1677 } 1677 }
1678 1678
1679 // Allocate result 1679 // Allocate result
1680 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_constructor_klass(), num_constructors, CHECK_NULL); 1680 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_Constructor_klass(), num_constructors, CHECK_NULL);
1681 objArrayHandle result(THREAD, r); 1681 objArrayHandle result(THREAD, r);
1682 1682
1683 int out_idx = 0; 1683 int out_idx = 0;
1684 for (i = 0; i < methods_length; i++) { 1684 for (i = 0; i < methods_length; i++) {
1685 methodHandle method(THREAD, (methodOop) methods->obj_at(i)); 1685 methodHandle method(THREAD, (methodOop) methods->obj_at(i));
1888 } 1888 }
1889 int klass_ref = cp->uncached_klass_ref_index_at(index); 1889 int klass_ref = cp->uncached_klass_ref_index_at(index);
1890 symbolHandle klass_name (THREAD, cp->klass_name_at(klass_ref)); 1890 symbolHandle klass_name (THREAD, cp->klass_name_at(klass_ref));
1891 symbolHandle member_name(THREAD, cp->uncached_name_ref_at(index)); 1891 symbolHandle member_name(THREAD, cp->uncached_name_ref_at(index));
1892 symbolHandle member_sig (THREAD, cp->uncached_signature_ref_at(index)); 1892 symbolHandle member_sig (THREAD, cp->uncached_signature_ref_at(index));
1893 objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::string_klass(), 3, CHECK_NULL); 1893 objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::String_klass(), 3, CHECK_NULL);
1894 objArrayHandle dest(THREAD, dest_o); 1894 objArrayHandle dest(THREAD, dest_o);
1895 Handle str = java_lang_String::create_from_symbol(klass_name, CHECK_NULL); 1895 Handle str = java_lang_String::create_from_symbol(klass_name, CHECK_NULL);
1896 dest->obj_at_put(0, str()); 1896 dest->obj_at_put(0, str());
1897 str = java_lang_String::create_from_symbol(member_name, CHECK_NULL); 1897 str = java_lang_String::create_from_symbol(member_name, CHECK_NULL);
1898 dest->obj_at_put(1, str()); 1898 dest->obj_at_put(1, str());
2576 HandleMark hm(THREAD); 2576 HandleMark hm(THREAD);
2577 Handle obj(THREAD, thread->threadObj()); 2577 Handle obj(THREAD, thread->threadObj());
2578 JavaValue result(T_VOID); 2578 JavaValue result(T_VOID);
2579 JavaCalls::call_virtual(&result, 2579 JavaCalls::call_virtual(&result,
2580 obj, 2580 obj,
2581 KlassHandle(THREAD, SystemDictionary::thread_klass()), 2581 KlassHandle(THREAD, SystemDictionary::Thread_klass()),
2582 vmSymbolHandles::run_method_name(), 2582 vmSymbolHandles::run_method_name(),
2583 vmSymbolHandles::void_method_signature(), 2583 vmSymbolHandles::void_method_signature(),
2584 THREAD); 2584 THREAD);
2585 } 2585 }
2586 2586
2674 // NOTE (from JDK 1.2): this is done solely to prevent stopped 2674 // NOTE (from JDK 1.2): this is done solely to prevent stopped
2675 // threads from being restarted. 2675 // threads from being restarted.
2676 // Fix for 4314342, 4145910, perhaps others: it now doesn't have 2676 // Fix for 4314342, 4145910, perhaps others: it now doesn't have
2677 // any effect on the "liveness" of a thread; see 2677 // any effect on the "liveness" of a thread; see
2678 // JVM_IsThreadAlive, below. 2678 // JVM_IsThreadAlive, below.
2679 if (java_throwable->is_a(SystemDictionary::threaddeath_klass())) { 2679 if (java_throwable->is_a(SystemDictionary::ThreadDeath_klass())) {
2680 java_lang_Thread::set_stillborn(java_thread); 2680 java_lang_Thread::set_stillborn(java_thread);
2681 } 2681 }
2682 THROW_OOP(java_throwable); 2682 THROW_OOP(java_throwable);
2683 } else { 2683 } else {
2684 // Enques a VM_Operation to stop all threads and then deliver the exception... 2684 // Enques a VM_Operation to stop all threads and then deliver the exception...
3029 } 3029 }
3030 } 3030 }
3031 } 3031 }
3032 3032
3033 // Create result array of type [Ljava/lang/Class; 3033 // Create result array of type [Ljava/lang/Class;
3034 objArrayOop result = oopFactory::new_objArray(SystemDictionary::class_klass(), depth, CHECK_NULL); 3034 objArrayOop result = oopFactory::new_objArray(SystemDictionary::Class_klass(), depth, CHECK_NULL);
3035 // Fill in mirrors corresponding to method holders 3035 // Fill in mirrors corresponding to method holders
3036 int index = 0; 3036 int index = 0;
3037 while (first != NULL) { 3037 while (first != NULL) {
3038 result->obj_at_put(index++, Klass::cast(first->klass())->java_mirror()); 3038 result->obj_at_put(index++, Klass::cast(first->klass())->java_mirror());
3039 first = first->next; 3039 first = first->next;
4325 ResourceMark rm(THREAD); 4325 ResourceMark rm(THREAD);
4326 ThreadsListEnumerator tle(THREAD, false, false); 4326 ThreadsListEnumerator tle(THREAD, false, false);
4327 JvmtiVMObjectAllocEventCollector oam; 4327 JvmtiVMObjectAllocEventCollector oam;
4328 4328
4329 int num_threads = tle.num_threads(); 4329 int num_threads = tle.num_threads();
4330 objArrayOop r = oopFactory::new_objArray(SystemDictionary::thread_klass(), num_threads, CHECK_NULL); 4330 objArrayOop r = oopFactory::new_objArray(SystemDictionary::Thread_klass(), num_threads, CHECK_NULL);
4331 objArrayHandle threads_ah(THREAD, r); 4331 objArrayHandle threads_ah(THREAD, r);
4332 4332
4333 for (int i = 0; i < num_threads; i++) { 4333 for (int i = 0; i < num_threads; i++) {
4334 Handle h = tle.get_threadObj(i); 4334 Handle h = tle.get_threadObj(i);
4335 threads_ah->obj_at_put(i, h()); 4335 threads_ah->obj_at_put(i, h());
4359 THROW_(vmSymbols::java_lang_IllegalArgumentException(), 0); 4359 THROW_(vmSymbols::java_lang_IllegalArgumentException(), 0);
4360 } 4360 }
4361 4361
4362 // check if threads is not an array of objects of Thread class 4362 // check if threads is not an array of objects of Thread class
4363 klassOop k = objArrayKlass::cast(ah->klass())->element_klass(); 4363 klassOop k = objArrayKlass::cast(ah->klass())->element_klass();
4364 if (k != SystemDictionary::thread_klass()) { 4364 if (k != SystemDictionary::Thread_klass()) {
4365 THROW_(vmSymbols::java_lang_IllegalArgumentException(), 0); 4365 THROW_(vmSymbols::java_lang_IllegalArgumentException(), 0);
4366 } 4366 }
4367 4367
4368 ResourceMark rm(THREAD); 4368 ResourceMark rm(THREAD);
4369 4369
4419 instanceKlassHandle ik_h(THREAD, k); 4419 instanceKlassHandle ik_h(THREAD, k);
4420 int encl_method_class_idx = ik_h->enclosing_method_class_index(); 4420 int encl_method_class_idx = ik_h->enclosing_method_class_index();
4421 if (encl_method_class_idx == 0) { 4421 if (encl_method_class_idx == 0) {
4422 return NULL; 4422 return NULL;
4423 } 4423 }
4424 objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::object_klass(), 3, CHECK_NULL); 4424 objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::Object_klass(), 3, CHECK_NULL);
4425 objArrayHandle dest(THREAD, dest_o); 4425 objArrayHandle dest(THREAD, dest_o);
4426 klassOop enc_k = ik_h->constants()->klass_at(encl_method_class_idx, CHECK_NULL); 4426 klassOop enc_k = ik_h->constants()->klass_at(encl_method_class_idx, CHECK_NULL);
4427 dest->obj_at_put(0, Klass::cast(enc_k)->java_mirror()); 4427 dest->obj_at_put(0, Klass::cast(enc_k)->java_mirror());
4428 int encl_method_method_idx = ik_h->enclosing_method_method_index(); 4428 int encl_method_method_idx = ik_h->enclosing_method_method_index();
4429 if (encl_method_method_idx != 0) { 4429 if (encl_method_method_idx != 0) {
4533 case JAVA_THREAD_STATE_NEW : { 4533 case JAVA_THREAD_STATE_NEW : {
4534 assert(values_h->length() == 1 && 4534 assert(values_h->length() == 1 &&
4535 values_h->int_at(0) == java_lang_Thread::NEW, 4535 values_h->int_at(0) == java_lang_Thread::NEW,
4536 "Invalid threadStatus value"); 4536 "Invalid threadStatus value");
4537 4537
4538 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4538 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4539 1, /* only 1 substate */ 4539 1, /* only 1 substate */
4540 CHECK_NULL); 4540 CHECK_NULL);
4541 names_h = objArrayHandle(THREAD, r); 4541 names_h = objArrayHandle(THREAD, r);
4542 Handle name = java_lang_String::create_from_str("NEW", CHECK_NULL); 4542 Handle name = java_lang_String::create_from_str("NEW", CHECK_NULL);
4543 names_h->obj_at_put(0, name()); 4543 names_h->obj_at_put(0, name());
4546 case JAVA_THREAD_STATE_RUNNABLE : { 4546 case JAVA_THREAD_STATE_RUNNABLE : {
4547 assert(values_h->length() == 1 && 4547 assert(values_h->length() == 1 &&
4548 values_h->int_at(0) == java_lang_Thread::RUNNABLE, 4548 values_h->int_at(0) == java_lang_Thread::RUNNABLE,
4549 "Invalid threadStatus value"); 4549 "Invalid threadStatus value");
4550 4550
4551 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4551 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4552 1, /* only 1 substate */ 4552 1, /* only 1 substate */
4553 CHECK_NULL); 4553 CHECK_NULL);
4554 names_h = objArrayHandle(THREAD, r); 4554 names_h = objArrayHandle(THREAD, r);
4555 Handle name = java_lang_String::create_from_str("RUNNABLE", CHECK_NULL); 4555 Handle name = java_lang_String::create_from_str("RUNNABLE", CHECK_NULL);
4556 names_h->obj_at_put(0, name()); 4556 names_h->obj_at_put(0, name());
4559 case JAVA_THREAD_STATE_BLOCKED : { 4559 case JAVA_THREAD_STATE_BLOCKED : {
4560 assert(values_h->length() == 1 && 4560 assert(values_h->length() == 1 &&
4561 values_h->int_at(0) == java_lang_Thread::BLOCKED_ON_MONITOR_ENTER, 4561 values_h->int_at(0) == java_lang_Thread::BLOCKED_ON_MONITOR_ENTER,
4562 "Invalid threadStatus value"); 4562 "Invalid threadStatus value");
4563 4563
4564 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4564 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4565 1, /* only 1 substate */ 4565 1, /* only 1 substate */
4566 CHECK_NULL); 4566 CHECK_NULL);
4567 names_h = objArrayHandle(THREAD, r); 4567 names_h = objArrayHandle(THREAD, r);
4568 Handle name = java_lang_String::create_from_str("BLOCKED", CHECK_NULL); 4568 Handle name = java_lang_String::create_from_str("BLOCKED", CHECK_NULL);
4569 names_h->obj_at_put(0, name()); 4569 names_h->obj_at_put(0, name());
4572 case JAVA_THREAD_STATE_WAITING : { 4572 case JAVA_THREAD_STATE_WAITING : {
4573 assert(values_h->length() == 2 && 4573 assert(values_h->length() == 2 &&
4574 values_h->int_at(0) == java_lang_Thread::IN_OBJECT_WAIT && 4574 values_h->int_at(0) == java_lang_Thread::IN_OBJECT_WAIT &&
4575 values_h->int_at(1) == java_lang_Thread::PARKED, 4575 values_h->int_at(1) == java_lang_Thread::PARKED,
4576 "Invalid threadStatus value"); 4576 "Invalid threadStatus value");
4577 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4577 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4578 2, /* number of substates */ 4578 2, /* number of substates */
4579 CHECK_NULL); 4579 CHECK_NULL);
4580 names_h = objArrayHandle(THREAD, r); 4580 names_h = objArrayHandle(THREAD, r);
4581 Handle name0 = java_lang_String::create_from_str("WAITING.OBJECT_WAIT", 4581 Handle name0 = java_lang_String::create_from_str("WAITING.OBJECT_WAIT",
4582 CHECK_NULL); 4582 CHECK_NULL);
4590 assert(values_h->length() == 3 && 4590 assert(values_h->length() == 3 &&
4591 values_h->int_at(0) == java_lang_Thread::SLEEPING && 4591 values_h->int_at(0) == java_lang_Thread::SLEEPING &&
4592 values_h->int_at(1) == java_lang_Thread::IN_OBJECT_WAIT_TIMED && 4592 values_h->int_at(1) == java_lang_Thread::IN_OBJECT_WAIT_TIMED &&
4593 values_h->int_at(2) == java_lang_Thread::PARKED_TIMED, 4593 values_h->int_at(2) == java_lang_Thread::PARKED_TIMED,
4594 "Invalid threadStatus value"); 4594 "Invalid threadStatus value");
4595 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4595 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4596 3, /* number of substates */ 4596 3, /* number of substates */
4597 CHECK_NULL); 4597 CHECK_NULL);
4598 names_h = objArrayHandle(THREAD, r); 4598 names_h = objArrayHandle(THREAD, r);
4599 Handle name0 = java_lang_String::create_from_str("TIMED_WAITING.SLEEPING", 4599 Handle name0 = java_lang_String::create_from_str("TIMED_WAITING.SLEEPING",
4600 CHECK_NULL); 4600 CHECK_NULL);
4609 } 4609 }
4610 case JAVA_THREAD_STATE_TERMINATED : { 4610 case JAVA_THREAD_STATE_TERMINATED : {
4611 assert(values_h->length() == 1 && 4611 assert(values_h->length() == 1 &&
4612 values_h->int_at(0) == java_lang_Thread::TERMINATED, 4612 values_h->int_at(0) == java_lang_Thread::TERMINATED,
4613 "Invalid threadStatus value"); 4613 "Invalid threadStatus value");
4614 objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(), 4614 objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
4615 1, /* only 1 substate */ 4615 1, /* only 1 substate */
4616 CHECK_NULL); 4616 CHECK_NULL);
4617 names_h = objArrayHandle(THREAD, r); 4617 names_h = objArrayHandle(THREAD, r);
4618 Handle name = java_lang_String::create_from_str("TERMINATED", CHECK_NULL); 4618 Handle name = java_lang_String::create_from_str("TERMINATED", CHECK_NULL);
4619 names_h->obj_at_put(0, name()); 4619 names_h->obj_at_put(0, name());
4644 #else // KERNEL 4644 #else // KERNEL
4645 info->is_kernel_jvm = 0; // false; 4645 info->is_kernel_jvm = 0; // false;
4646 #endif // KERNEL 4646 #endif // KERNEL
4647 } 4647 }
4648 JVM_END 4648 JVM_END
4649