comparison src/share/vm/oops/instanceKlass.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 987e948ebbc8
children 9b9c1ee9b3f6
comparison
equal deleted inserted replaced
1140:1f6d42899c3a 1142:4ce7240d622c
381 { 381 {
382 EXCEPTION_MARK; 382 EXCEPTION_MARK;
383 this_oop->set_initialization_state_and_notify(initialization_error, THREAD); 383 this_oop->set_initialization_state_and_notify(initialization_error, THREAD);
384 CLEAR_PENDING_EXCEPTION; // ignore any exception thrown, class initialization error is thrown below 384 CLEAR_PENDING_EXCEPTION; // ignore any exception thrown, class initialization error is thrown below
385 } 385 }
386 if (e->is_a(SystemDictionary::error_klass())) { 386 if (e->is_a(SystemDictionary::Error_klass())) {
387 THROW_OOP(e()); 387 THROW_OOP(e());
388 } else { 388 } else {
389 JavaCallArguments args(e); 389 JavaCallArguments args(e);
390 THROW_ARG(vmSymbolHandles::java_lang_ExceptionInInitializerError(), 390 THROW_ARG(vmSymbolHandles::java_lang_ExceptionInInitializerError(),
391 vmSymbolHandles::throwable_void_signature(), 391 vmSymbolHandles::throwable_void_signature(),
566 if (is_interface() || is_abstract()) { 566 if (is_interface() || is_abstract()) {
567 ResourceMark rm(THREAD); 567 ResourceMark rm(THREAD);
568 THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError() 568 THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError()
569 : vmSymbols::java_lang_InstantiationException(), external_name()); 569 : vmSymbols::java_lang_InstantiationException(), external_name());
570 } 570 }
571 if (as_klassOop() == SystemDictionary::class_klass()) { 571 if (as_klassOop() == SystemDictionary::Class_klass()) {
572 ResourceMark rm(THREAD); 572 ResourceMark rm(THREAD);
573 THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError() 573 THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError()
574 : vmSymbols::java_lang_IllegalAccessException(), external_name()); 574 : vmSymbols::java_lang_IllegalAccessException(), external_name());
575 } 575 }
576 } 576 }
2221 2221
2222 2222
2223 void instanceKlass::oop_print_on(oop obj, outputStream* st) { 2223 void instanceKlass::oop_print_on(oop obj, outputStream* st) {
2224 Klass::oop_print_on(obj, st); 2224 Klass::oop_print_on(obj, st);
2225 2225
2226 if (as_klassOop() == SystemDictionary::string_klass()) { 2226 if (as_klassOop() == SystemDictionary::String_klass()) {
2227 typeArrayOop value = java_lang_String::value(obj); 2227 typeArrayOop value = java_lang_String::value(obj);
2228 juint offset = java_lang_String::offset(obj); 2228 juint offset = java_lang_String::offset(obj);
2229 juint length = java_lang_String::length(obj); 2229 juint length = java_lang_String::length(obj);
2230 if (value != NULL && 2230 if (value != NULL &&
2231 value->is_typeArray() && 2231 value->is_typeArray() &&
2241 2241
2242 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj)); 2242 st->print_cr(BULLET"---- fields (total size %d words):", oop_size(obj));
2243 FieldPrinter print_nonstatic_field(st, obj); 2243 FieldPrinter print_nonstatic_field(st, obj);
2244 do_nonstatic_fields(&print_nonstatic_field); 2244 do_nonstatic_fields(&print_nonstatic_field);
2245 2245
2246 if (as_klassOop() == SystemDictionary::class_klass()) { 2246 if (as_klassOop() == SystemDictionary::Class_klass()) {
2247 st->print(BULLET"signature: "); 2247 st->print(BULLET"signature: ");
2248 java_lang_Class::print_signature(obj, st); 2248 java_lang_Class::print_signature(obj, st);
2249 st->cr(); 2249 st->cr();
2250 klassOop mirrored_klass = java_lang_Class::as_klassOop(obj); 2250 klassOop mirrored_klass = java_lang_Class::as_klassOop(obj);
2251 st->print(BULLET"fake entry for mirror: "); 2251 st->print(BULLET"fake entry for mirror: ");
2268 2268
2269 void instanceKlass::oop_print_value_on(oop obj, outputStream* st) { 2269 void instanceKlass::oop_print_value_on(oop obj, outputStream* st) {
2270 st->print("a "); 2270 st->print("a ");
2271 name()->print_value_on(st); 2271 name()->print_value_on(st);
2272 obj->print_address_on(st); 2272 obj->print_address_on(st);
2273 if (as_klassOop() == SystemDictionary::string_klass() 2273 if (as_klassOop() == SystemDictionary::String_klass()
2274 && java_lang_String::value(obj) != NULL) { 2274 && java_lang_String::value(obj) != NULL) {
2275 ResourceMark rm; 2275 ResourceMark rm;
2276 int len = java_lang_String::length(obj); 2276 int len = java_lang_String::length(obj);
2277 int plen = (len < 24 ? len : 12); 2277 int plen = (len < 24 ? len : 12);
2278 char* str = java_lang_String::as_utf8_string(obj, 0, plen); 2278 char* str = java_lang_String::as_utf8_string(obj, 0, plen);
2279 st->print(" = \"%s\"", str); 2279 st->print(" = \"%s\"", str);
2280 if (len > plen) 2280 if (len > plen)
2281 st->print("...[%d]", len); 2281 st->print("...[%d]", len);
2282 } else if (as_klassOop() == SystemDictionary::class_klass()) { 2282 } else if (as_klassOop() == SystemDictionary::Class_klass()) {
2283 klassOop k = java_lang_Class::as_klassOop(obj); 2283 klassOop k = java_lang_Class::as_klassOop(obj);
2284 st->print(" = "); 2284 st->print(" = ");
2285 if (k != NULL) { 2285 if (k != NULL) {
2286 k->print_value_on(st); 2286 k->print_value_on(st);
2287 } else { 2287 } else {
2344 // Verify that java.lang.Class instances have a fake oop field added. 2344 // Verify that java.lang.Class instances have a fake oop field added.
2345 instanceKlass* ik = instanceKlass::cast(k); 2345 instanceKlass* ik = instanceKlass::cast(k);
2346 2346
2347 // Check that we have the right class 2347 // Check that we have the right class
2348 static bool first_time = true; 2348 static bool first_time = true;
2349 guarantee(k == SystemDictionary::class_klass() && first_time, "Invalid verify of maps"); 2349 guarantee(k == SystemDictionary::Class_klass() && first_time, "Invalid verify of maps");
2350 first_time = false; 2350 first_time = false;
2351 const int extra = java_lang_Class::number_of_fake_oop_fields; 2351 const int extra = java_lang_Class::number_of_fake_oop_fields;
2352 guarantee(ik->nonstatic_field_size() == extra, "just checking"); 2352 guarantee(ik->nonstatic_field_size() == extra, "just checking");
2353 guarantee(ik->nonstatic_oop_map_count() == 1, "just checking"); 2353 guarantee(ik->nonstatic_oop_map_count() == 1, "just checking");
2354 guarantee(ik->size_helper() == align_object_size(instanceOopDesc::header_size() + extra), "just checking"); 2354 guarantee(ik->size_helper() == align_object_size(instanceOopDesc::header_size() + extra), "just checking");