Fri, 16 Nov 2012 09:19:12 -0500
Merge
1.1 --- a/src/share/vm/c1/c1_Runtime1.cpp Fri Nov 16 09:59:08 2012 +0100 1.2 +++ b/src/share/vm/c1/c1_Runtime1.cpp Fri Nov 16 09:19:12 2012 -0500 1.3 @@ -374,7 +374,7 @@ 1.4 1.5 JRT_ENTRY(void, Runtime1::throw_array_store_exception(JavaThread* thread, oopDesc* obj)) 1.6 ResourceMark rm(thread); 1.7 - const char* klass_name = Klass::cast(obj->klass())->external_name(); 1.8 + const char* klass_name = obj->klass()->external_name(); 1.9 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayStoreException(), klass_name); 1.10 JRT_END 1.11 1.12 @@ -631,7 +631,7 @@ 1.13 NOT_PRODUCT(_throw_class_cast_exception_count++;) 1.14 ResourceMark rm(thread); 1.15 char* message = SharedRuntime::generate_class_cast_message( 1.16 - thread, Klass::cast(object->klass())->external_name()); 1.17 + thread, object->klass()->external_name()); 1.18 SharedRuntime::throw_and_post_jvmti_exception( 1.19 thread, vmSymbols::java_lang_ClassCastException(), message); 1.20 JRT_END 1.21 @@ -876,7 +876,7 @@ 1.22 case Bytecodes::_anewarray: 1.23 { Bytecode_anewarray anew(caller_method(), caller_method->bcp_from(bci)); 1.24 Klass* ek = caller_method->constants()->klass_at(anew.index(), CHECK); 1.25 - k = Klass::cast(ek)->array_klass(CHECK); 1.26 + k = ek->array_klass(CHECK); 1.27 } 1.28 break; 1.29 case Bytecodes::_ldc: 1.30 @@ -1236,7 +1236,7 @@ 1.31 } else { 1.32 Klass* bound = ObjArrayKlass::cast(dst->klass())->element_klass(); 1.33 Klass* stype = ObjArrayKlass::cast(src->klass())->element_klass(); 1.34 - if (stype == bound || Klass::cast(stype)->is_subtype_of(bound)) { 1.35 + if (stype == bound || stype->is_subtype_of(bound)) { 1.36 // Elements are guaranteed to be subtypes, so no check necessary 1.37 bs->write_ref_array_pre(dst_addr, length); 1.38 Copy::conjoint_oops_atomic(src_addr, dst_addr, length);
2.1 --- a/src/share/vm/ci/ciEnv.cpp Fri Nov 16 09:59:08 2012 +0100 2.2 +++ b/src/share/vm/ci/ciEnv.cpp Fri Nov 16 09:19:12 2012 -0500 2.3 @@ -427,7 +427,7 @@ 2.4 for (int i = cpool->length() - 1; i >= 1; i--) { 2.5 if (cpool->tag_at(i).is_klass()) { 2.6 Klass* kls = cpool->resolved_klass_at(i); 2.7 - if (Klass::cast(kls)->name() == sym) { 2.8 + if (kls->name() == sym) { 2.9 found_klass = KlassHandle(THREAD, kls); 2.10 break; 2.11 }
3.1 --- a/src/share/vm/ci/ciType.cpp Fri Nov 16 09:59:08 2012 +0100 3.2 +++ b/src/share/vm/ci/ciType.cpp Fri Nov 16 09:19:12 2012 -0500 3.3 @@ -45,7 +45,7 @@ 3.4 } 3.5 3.6 ciType::ciType(KlassHandle k) : ciMetadata(k()) { 3.7 - _basic_type = Klass::cast(k())->oop_is_array() ? T_ARRAY : T_OBJECT; 3.8 + _basic_type = k()->oop_is_array() ? T_ARRAY : T_OBJECT; 3.9 } 3.10 3.11
4.1 --- a/src/share/vm/classfile/classFileParser.cpp Fri Nov 16 09:59:08 2012 +0100 4.2 +++ b/src/share/vm/classfile/classFileParser.cpp Fri Nov 16 09:19:12 2012 -0500 4.3 @@ -824,7 +824,7 @@ 4.4 interf = KlassHandle(THREAD, k); 4.5 } 4.6 4.7 - if (!Klass::cast(interf())->is_interface()) { 4.8 + if (!interf()->is_interface()) { 4.9 THROW_MSG_(vmSymbols::java_lang_IncompatibleClassChangeError(), "Implementing class", NULL); 4.10 } 4.11 if (InstanceKlass::cast(interf())->has_default_methods()) { 4.12 @@ -3831,7 +3831,7 @@ 4.13 if (TraceClassResolution) { 4.14 ResourceMark rm; 4.15 // print out the superclass. 4.16 - const char * from = Klass::cast(this_klass())->external_name(); 4.17 + const char * from = this_klass()->external_name(); 4.18 if (this_klass->java_super() != NULL) { 4.19 tty->print("RESOLVE %s %s (super)\n", from, InstanceKlass::cast(this_klass->java_super())->external_name()); 4.20 } 4.21 @@ -3982,13 +3982,13 @@ 4.22 // java.lang.Object has empty default constructor 4.23 k->set_has_vanilla_constructor(); 4.24 } else { 4.25 - if (Klass::cast(super)->has_vanilla_constructor() && 4.26 + if (super->has_vanilla_constructor() && 4.27 _has_vanilla_constructor) { 4.28 k->set_has_vanilla_constructor(); 4.29 } 4.30 #ifdef ASSERT 4.31 bool v = false; 4.32 - if (Klass::cast(super)->has_vanilla_constructor()) { 4.33 + if (super->has_vanilla_constructor()) { 4.34 Method* constructor = k->find_method(vmSymbols::object_initializer_name( 4.35 ), vmSymbols::void_method_signature()); 4.36 if (constructor != NULL && constructor->is_vanilla_constructor()) { 4.37 @@ -4130,7 +4130,7 @@ 4.38 int lng = local_interfaces->length(); 4.39 for (int i = lng - 1; i >= 0; i--) { 4.40 Klass* k = local_interfaces->at(i); 4.41 - assert (k != NULL && Klass::cast(k)->is_interface(), "invalid interface"); 4.42 + assert (k != NULL && k->is_interface(), "invalid interface"); 4.43 if (!Reflection::verify_class_access(this_klass(), k, false)) { 4.44 ResourceMark rm(THREAD); 4.45 Exceptions::fthrow(
5.1 --- a/src/share/vm/classfile/dictionary.cpp Fri Nov 16 09:59:08 2012 +0100 5.2 +++ b/src/share/vm/classfile/dictionary.cpp Fri Nov 16 09:19:12 2012 -0500 5.3 @@ -346,7 +346,7 @@ 5.4 KlassHandle obj) { 5.5 assert_locked_or_safepoint(SystemDictionary_lock); 5.6 assert(obj() != NULL, "adding NULL obj"); 5.7 - assert(Klass::cast(obj())->name() == class_name, "sanity check on name"); 5.8 + assert(obj()->name() == class_name, "sanity check on name"); 5.9 5.10 unsigned int hash = compute_hash(class_name, loader_data); 5.11 int index = hash_to_index(hash); 5.12 @@ -553,7 +553,7 @@ 5.13 bool is_defining_class = 5.14 (loader_data == InstanceKlass::cast(e)->class_loader_data()); 5.15 tty->print("%s%s", is_defining_class ? " " : "^", 5.16 - Klass::cast(e)->external_name()); 5.17 + e->external_name()); 5.18 5.19 tty->print(", loader "); 5.20 loader_data->print_value(); 5.21 @@ -575,7 +575,7 @@ 5.22 probe = probe->next()) { 5.23 Klass* e = probe->klass(); 5.24 ClassLoaderData* loader_data = probe->loader_data(); 5.25 - guarantee(Klass::cast(e)->oop_is_instance(), 5.26 + guarantee(e->oop_is_instance(), 5.27 "Verify of system dictionary failed"); 5.28 // class loader must be present; a null class loader is the 5.29 // boostrap loader
6.1 --- a/src/share/vm/classfile/javaClasses.cpp Fri Nov 16 09:59:08 2012 +0100 6.2 +++ b/src/share/vm/classfile/javaClasses.cpp Fri Nov 16 09:19:12 2012 -0500 6.3 @@ -561,7 +561,7 @@ 6.4 assert(k->oop_is_objArray(), "Must be"); 6.5 Klass* element_klass = ObjArrayKlass::cast(k())->element_klass(); 6.6 assert(element_klass != NULL, "Must have an element klass"); 6.7 - comp_mirror = Klass::cast(element_klass)->java_mirror(); 6.8 + comp_mirror = element_klass->java_mirror(); 6.9 } 6.10 assert(comp_mirror.not_null(), "must have a mirror"); 6.11 6.12 @@ -644,8 +644,8 @@ 6.13 name = vmSymbols::type_signature(primitive_type(java_class)); 6.14 } else { 6.15 Klass* k = as_Klass(java_class); 6.16 - is_instance = Klass::cast(k)->oop_is_instance(); 6.17 - name = Klass::cast(k)->name(); 6.18 + is_instance = k->oop_is_instance(); 6.19 + name = k->name(); 6.20 } 6.21 if (name == NULL) { 6.22 st->print("<null>"); 6.23 @@ -667,12 +667,12 @@ 6.24 name->increment_refcount(); 6.25 } else { 6.26 Klass* k = as_Klass(java_class); 6.27 - if (!Klass::cast(k)->oop_is_instance()) { 6.28 - name = Klass::cast(k)->name(); 6.29 + if (!k->oop_is_instance()) { 6.30 + name = k->name(); 6.31 name->increment_refcount(); 6.32 } else { 6.33 ResourceMark rm; 6.34 - const char* sigstr = Klass::cast(k)->signature_name(); 6.35 + const char* sigstr = k->signature_name(); 6.36 int siglen = (int) strlen(sigstr); 6.37 if (!intern_if_not_found) { 6.38 name = SymbolTable::probe(sigstr, siglen); 6.39 @@ -687,13 +687,13 @@ 6.40 6.41 Klass* java_lang_Class::array_klass(oop java_class) { 6.42 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset)); 6.43 - assert(k == NULL || k->is_klass() && Klass::cast(k)->oop_is_array(), "should be array klass"); 6.44 + assert(k == NULL || k->is_klass() && k->oop_is_array(), "should be array klass"); 6.45 return k; 6.46 } 6.47 6.48 6.49 void java_lang_Class::set_array_klass(oop java_class, Klass* klass) { 6.50 - assert(klass->is_klass() && Klass::cast(klass)->oop_is_array(), "should be array klass"); 6.51 + assert(klass->is_klass() && klass->oop_is_array(), "should be array klass"); 6.52 java_class->metadata_field_put(_array_klass_offset, klass); 6.53 } 6.54
7.1 --- a/src/share/vm/classfile/javaClasses.hpp Fri Nov 16 09:59:08 2012 +0100 7.2 +++ b/src/share/vm/classfile/javaClasses.hpp Fri Nov 16 09:19:12 2012 -0500 7.3 @@ -914,7 +914,7 @@ 7.4 7.5 // Testers 7.6 static bool is_subclass(Klass* klass) { 7.7 - return Klass::cast(klass)->is_subclass_of(SystemDictionary::MethodHandle_klass()); 7.8 + return klass->is_subclass_of(SystemDictionary::MethodHandle_klass()); 7.9 } 7.10 static bool is_instance(oop obj) { 7.11 return obj != NULL && is_subclass(obj->klass()); 7.12 @@ -944,7 +944,7 @@ 7.13 // Testers 7.14 static bool is_subclass(Klass* klass) { 7.15 return SystemDictionary::LambdaForm_klass() != NULL && 7.16 - Klass::cast(klass)->is_subclass_of(SystemDictionary::LambdaForm_klass()); 7.17 + klass->is_subclass_of(SystemDictionary::LambdaForm_klass()); 7.18 } 7.19 static bool is_instance(oop obj) { 7.20 return obj != NULL && is_subclass(obj->klass()); 7.21 @@ -1006,7 +1006,7 @@ 7.22 7.23 // Testers 7.24 static bool is_subclass(Klass* klass) { 7.25 - return Klass::cast(klass)->is_subclass_of(SystemDictionary::MemberName_klass()); 7.26 + return klass->is_subclass_of(SystemDictionary::MemberName_klass()); 7.27 } 7.28 static bool is_instance(oop obj) { 7.29 return obj != NULL && is_subclass(obj->klass()); 7.30 @@ -1092,7 +1092,7 @@ 7.31 7.32 // Testers 7.33 static bool is_subclass(Klass* klass) { 7.34 - return Klass::cast(klass)->is_subclass_of(SystemDictionary::CallSite_klass()); 7.35 + return klass->is_subclass_of(SystemDictionary::CallSite_klass()); 7.36 } 7.37 static bool is_instance(oop obj) { 7.38 return obj != NULL && is_subclass(obj->klass()); 7.39 @@ -1162,7 +1162,7 @@ 7.40 7.41 // Testers 7.42 static bool is_subclass(Klass* klass) { 7.43 - return Klass::cast(klass)->is_subclass_of(SystemDictionary::ClassLoader_klass()); 7.44 + return klass->is_subclass_of(SystemDictionary::ClassLoader_klass()); 7.45 } 7.46 static bool is_instance(oop obj) { 7.47 return obj != NULL && is_subclass(obj->klass());
8.1 --- a/src/share/vm/classfile/loaderConstraints.cpp Fri Nov 16 09:59:08 2012 +0100 8.2 +++ b/src/share/vm/classfile/loaderConstraints.cpp Fri Nov 16 09:19:12 2012 -0500 8.3 @@ -320,7 +320,7 @@ 8.4 Handle loader) { 8.5 LoaderConstraintEntry *p = *(find_loader_constraint(name, loader)); 8.6 if (p != NULL && p->klass() != NULL) { 8.7 - if (Klass::cast(p->klass())->oop_is_instance() && !InstanceKlass::cast(p->klass())->is_loaded()) { 8.8 + if (p->klass()->oop_is_instance() && !InstanceKlass::cast(p->klass())->is_loaded()) { 8.9 // Only return fully loaded classes. Classes found through the 8.10 // constraints might still be in the process of loading. 8.11 return NULL;
9.1 --- a/src/share/vm/classfile/placeholders.cpp Fri Nov 16 09:59:08 2012 +0100 9.2 +++ b/src/share/vm/classfile/placeholders.cpp Fri Nov 16 09:19:12 2012 -0500 9.3 @@ -45,7 +45,7 @@ 9.4 entry->set_loadInstanceThreadQ(NULL); 9.5 entry->set_defineThreadQ(NULL); 9.6 entry->set_definer(NULL); 9.7 - entry->set_instanceKlass(NULL); 9.8 + entry->set_instance_klass(NULL); 9.9 return entry; 9.10 } 9.11 9.12 @@ -188,7 +188,7 @@ 9.13 void PlaceholderEntry::classes_do(KlassClosure* closure) { 9.14 assert(klassname() != NULL, "should have a non-null klass"); 9.15 if (_instanceKlass != NULL) { 9.16 - closure->do_klass(InstanceKlass()); 9.17 + closure->do_klass(instance_klass()); 9.18 } 9.19 } 9.20 9.21 @@ -220,9 +220,9 @@ 9.22 tty->print(", definer "); 9.23 definer()->print_value(); 9.24 } 9.25 - if (InstanceKlass() != NULL) { 9.26 + if (instance_klass() != NULL) { 9.27 tty->print(", InstanceKlass "); 9.28 - InstanceKlass()->print_value(); 9.29 + instance_klass()->print_value(); 9.30 } 9.31 tty->print("\n"); 9.32 tty->print("loadInstanceThreadQ threads:"); 9.33 @@ -241,9 +241,9 @@ 9.34 guarantee(loader_data() != NULL, "Must have been setup."); 9.35 guarantee(loader_data()->class_loader() == NULL || loader_data()->class_loader()->is_instance(), 9.36 "checking type of _loader"); 9.37 - guarantee(InstanceKlass() == NULL 9.38 - || Klass::cast(InstanceKlass())->oop_is_instance(), 9.39 - "checking type of InstanceKlass result"); 9.40 + guarantee(instance_klass() == NULL 9.41 + || instance_klass()->oop_is_instance(), 9.42 + "checking type of instance_klass result"); 9.43 } 9.44 9.45 void PlaceholderTable::verify() {
10.1 --- a/src/share/vm/classfile/placeholders.hpp Fri Nov 16 09:59:08 2012 +0100 10.2 +++ b/src/share/vm/classfile/placeholders.hpp Fri Nov 16 09:19:12 2012 -0500 10.3 @@ -191,8 +191,8 @@ 10.4 Thread* definer() const {return _definer; } 10.5 void set_definer(Thread* definer) { _definer = definer; } 10.6 10.7 - Klass* InstanceKlass() const {return _instanceKlass; } 10.8 - void set_instanceKlass(Klass* InstanceKlass) { _instanceKlass = InstanceKlass; } 10.9 + Klass* instance_klass() const {return _instanceKlass; } 10.10 + void set_instance_klass(Klass* ik) { _instanceKlass = ik; } 10.11 10.12 SeenThread* superThreadQ() const { return _superThreadQ; } 10.13 void set_superThreadQ(SeenThread* SeenThread) { _superThreadQ = SeenThread; }
11.1 --- a/src/share/vm/classfile/symbolTable.hpp Fri Nov 16 09:59:08 2012 +0100 11.2 +++ b/src/share/vm/classfile/symbolTable.hpp Fri Nov 16 09:19:12 2012 -0500 11.3 @@ -262,19 +262,14 @@ 11.4 // The string table 11.5 static StringTable* the_table() { return _the_table; } 11.6 11.7 + // Size of one bucket in the string table. Used when checking for rollover. 11.8 + static uint bucket_size() { return sizeof(HashtableBucket<mtSymbol>); } 11.9 + 11.10 static void create_table() { 11.11 assert(_the_table == NULL, "One string table allowed."); 11.12 _the_table = new StringTable(); 11.13 } 11.14 11.15 - static void create_table(HashtableBucket<mtSymbol>* t, int length, 11.16 - int number_of_entries) { 11.17 - assert(_the_table == NULL, "One string table allowed."); 11.18 - assert((size_t)length == StringTableSize * sizeof(HashtableBucket<mtSymbol>), 11.19 - "bad shared string size."); 11.20 - _the_table = new StringTable(t, number_of_entries); 11.21 - } 11.22 - 11.23 // GC support 11.24 // Delete pointers to otherwise-unreachable objects. 11.25 static void unlink(BoolObjectClosure* cl);
12.1 --- a/src/share/vm/classfile/systemDictionary.cpp Fri Nov 16 09:59:08 2012 +0100 12.2 +++ b/src/share/vm/classfile/systemDictionary.cpp Fri Nov 16 09:19:12 2012 -0500 12.3 @@ -240,7 +240,7 @@ 12.4 protection_domain, 12.5 CHECK_NULL); 12.6 if (k != NULL) { 12.7 - k = Klass::cast(k)->array_klass(fd.dimension(), CHECK_NULL); 12.8 + k = k->array_klass(fd.dimension(), CHECK_NULL); 12.9 } 12.10 } else { 12.11 k = Universe::typeArrayKlassObj(t); 12.12 @@ -328,8 +328,8 @@ 12.13 if ((childk != NULL ) && (is_superclass) && 12.14 ((quicksuperk = InstanceKlass::cast(childk)->super()) != NULL) && 12.15 12.16 - ((Klass::cast(quicksuperk)->name() == class_name) && 12.17 - (Klass::cast(quicksuperk)->class_loader() == class_loader()))) { 12.18 + ((quicksuperk->name() == class_name) && 12.19 + (quicksuperk->class_loader() == class_loader()))) { 12.20 return quicksuperk; 12.21 } else { 12.22 PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, child_name, loader_data); 12.23 @@ -928,7 +928,7 @@ 12.24 k = SystemDictionary::find(fd.object_key(), class_loader, protection_domain, THREAD); 12.25 } 12.26 if (k != NULL) { 12.27 - k = Klass::cast(k)->array_klass_or_null(fd.dimension()); 12.28 + k = k->array_klass_or_null(fd.dimension()); 12.29 } 12.30 } else { 12.31 k = find(class_name, class_loader, protection_domain, THREAD); 12.32 @@ -1537,7 +1537,7 @@ 12.33 // Only special cases allow parallel defines and can use other thread's results 12.34 // Other cases fall through, and may run into duplicate defines 12.35 // caught by finding an entry in the SystemDictionary 12.36 - if ((UnsyncloadClass || is_parallelDefine(class_loader)) && (probe->InstanceKlass() != NULL)) { 12.37 + if ((UnsyncloadClass || is_parallelDefine(class_loader)) && (probe->instance_klass() != NULL)) { 12.38 probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS); 12.39 placeholders()->find_and_remove(p_index, p_hash, name_h, loader_data, THREAD); 12.40 SystemDictionary_lock->notify_all(); 12.41 @@ -1545,7 +1545,7 @@ 12.42 Klass* check = find_class(d_index, d_hash, name_h, loader_data); 12.43 assert(check != NULL, "definer missed recording success"); 12.44 #endif 12.45 - return(instanceKlassHandle(THREAD, probe->InstanceKlass())); 12.46 + return(instanceKlassHandle(THREAD, probe->instance_klass())); 12.47 } else { 12.48 // This thread will define the class (even if earlier thread tried and had an error) 12.49 probe->set_definer(THREAD); 12.50 @@ -1566,7 +1566,7 @@ 12.51 linkage_exception = Handle(THREAD,PENDING_EXCEPTION); 12.52 CLEAR_PENDING_EXCEPTION; 12.53 } else { 12.54 - probe->set_instanceKlass(k()); 12.55 + probe->set_instance_klass(k()); 12.56 } 12.57 probe->set_definer(NULL); 12.58 probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS); 12.59 @@ -2149,7 +2149,7 @@ 12.60 } 12.61 // If element class already loaded, allocate array klass 12.62 if (klass != NULL) { 12.63 - klass = Klass::cast(klass)->array_klass_or_null(fd.dimension()); 12.64 + klass = klass->array_klass_or_null(fd.dimension()); 12.65 } 12.66 } else { 12.67 MutexLocker mu(SystemDictionary_lock, THREAD); 12.68 @@ -2466,9 +2466,9 @@ 12.69 Klass* sel_klass = java_lang_Class::as_Klass(mirror); 12.70 mirror = NULL; // safety 12.71 // Emulate ConstantPool::verify_constant_pool_resolve. 12.72 - if (Klass::cast(sel_klass)->oop_is_objArray()) 12.73 + if (sel_klass->oop_is_objArray()) 12.74 sel_klass = ObjArrayKlass::cast(sel_klass)->bottom_klass(); 12.75 - if (Klass::cast(sel_klass)->oop_is_instance()) { 12.76 + if (sel_klass->oop_is_instance()) { 12.77 KlassHandle sel_kh(THREAD, sel_klass); 12.78 LinkResolver::check_klass_accessability(accessing_klass, sel_kh, CHECK_(empty)); 12.79 }
13.1 --- a/src/share/vm/code/dependencies.cpp Fri Nov 16 09:59:08 2012 +0100 13.2 +++ b/src/share/vm/code/dependencies.cpp Fri Nov 16 09:19:12 2012 -0500 13.3 @@ -552,7 +552,7 @@ 13.4 } 13.5 tty->print(" %s = %s", what, (put_star? "*": "")); 13.6 if (arg.is_klass()) 13.7 - tty->print("%s", Klass::cast((Klass*)arg.metadata_value())->external_name()); 13.8 + tty->print("%s", ((Klass*)arg.metadata_value())->external_name()); 13.9 else if (arg.is_method()) 13.10 ((Method*)arg.metadata_value())->print_value(); 13.11 else 13.12 @@ -563,7 +563,7 @@ 13.13 bool put_star = !Dependencies::is_concrete_klass(witness); 13.14 tty->print_cr(" witness = %s%s", 13.15 (put_star? "*": ""), 13.16 - Klass::cast(witness)->external_name()); 13.17 + witness->external_name()); 13.18 } 13.19 } 13.20 13.21 @@ -809,7 +809,7 @@ 13.22 if (!(m->is_public() || m->is_protected())) 13.23 // The override story is complex when packages get involved. 13.24 return true; // Must punt the assertion to true. 13.25 - Klass* k = Klass::cast(ctxk); 13.26 + Klass* k = ctxk; 13.27 Method* lm = k->lookup_method(m->name(), m->signature()); 13.28 if (lm == NULL && k->oop_is_instance()) { 13.29 // It might be an abstract interface method, devoid of mirandas. 13.30 @@ -836,7 +836,7 @@ 13.31 } 13.32 ResourceMark rm; 13.33 tty->print_cr("Dependency method not found in the associated context:"); 13.34 - tty->print_cr(" context = %s", Klass::cast(ctxk)->external_name()); 13.35 + tty->print_cr(" context = %s", ctxk->external_name()); 13.36 tty->print( " method = "); m->print_short_name(tty); tty->cr(); 13.37 if (lm != NULL) { 13.38 tty->print( " found = "); lm->print_short_name(tty); tty->cr(); 13.39 @@ -1011,7 +1011,7 @@ 13.40 for (int i = 0; i < num_participants(); i++) { 13.41 Klass* part = participant(i); 13.42 if (part == NULL) continue; 13.43 - assert(changes.involves_context(part) == Klass::cast(new_type)->is_subtype_of(part), 13.44 + assert(changes.involves_context(part) == new_type->is_subtype_of(part), 13.45 "correct marking of participants, b/c new_type is unique"); 13.46 if (changes.involves_context(part)) { 13.47 // new guy is protected from this check by previous participant 13.48 @@ -1147,7 +1147,7 @@ 13.49 13.50 13.51 bool Dependencies::is_concrete_klass(Klass* k) { 13.52 - if (Klass::cast(k)->is_abstract()) return false; 13.53 + if (k->is_abstract()) return false; 13.54 // %%% We could treat classes which are concrete but 13.55 // have not yet been instantiated as virtually abstract. 13.56 // This would require a deoptimization barrier on first instantiation. 13.57 @@ -1706,12 +1706,12 @@ 13.58 } 13.59 13.60 bool KlassDepChange::involves_context(Klass* k) { 13.61 - if (k == NULL || !Klass::cast(k)->oop_is_instance()) { 13.62 + if (k == NULL || !k->oop_is_instance()) { 13.63 return false; 13.64 } 13.65 InstanceKlass* ik = InstanceKlass::cast(k); 13.66 bool is_contained = ik->is_marked_dependent(); 13.67 - assert(is_contained == Klass::cast(new_type())->is_subtype_of(k), 13.68 + assert(is_contained == new_type()->is_subtype_of(k), 13.69 "correct marking of potential context types"); 13.70 return is_contained; 13.71 }
14.1 --- a/src/share/vm/code/nmethod.cpp Fri Nov 16 09:59:08 2012 +0100 14.2 +++ b/src/share/vm/code/nmethod.cpp Fri Nov 16 09:19:12 2012 -0500 14.3 @@ -2568,9 +2568,8 @@ 14.4 deps.print_dependency(); 14.5 Klass* ctxk = deps.context_type(); 14.6 if (ctxk != NULL) { 14.7 - Klass* k = Klass::cast(ctxk); 14.8 - if (k->oop_is_instance() && ((InstanceKlass*)k)->is_dependent_nmethod(this)) { 14.9 - tty->print_cr(" [nmethod<=klass]%s", k->external_name()); 14.10 + if (ctxk->oop_is_instance() && ((InstanceKlass*)ctxk)->is_dependent_nmethod(this)) { 14.11 + tty->print_cr(" [nmethod<=klass]%s", ctxk->external_name()); 14.12 } 14.13 } 14.14 deps.log_dependency(); // put it into the xml log also
15.1 --- a/src/share/vm/compiler/disassembler.cpp Fri Nov 16 09:59:08 2012 +0100 15.2 +++ b/src/share/vm/compiler/disassembler.cpp Fri Nov 16 09:19:12 2012 -0500 15.3 @@ -353,7 +353,7 @@ 15.4 obj->print_value_on(st); 15.5 if (st->count() == c) { 15.6 // No output. (Can happen in product builds.) 15.7 - st->print("(a %s)", Klass::cast(obj->klass())->external_name()); 15.8 + st->print("(a %s)", obj->klass()->external_name()); 15.9 } 15.10 return; 15.11 }
16.1 --- a/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Nov 16 09:59:08 2012 +0100 16.2 +++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Nov 16 09:19:12 2012 -0500 16.3 @@ -2043,8 +2043,8 @@ 16.4 if (objKlassOop != klassOf && 16.5 !objKlassOop->is_subtype_of(klassOf)) { 16.6 ResourceMark rm(THREAD); 16.7 - const char* objName = Klass::cast(objKlassOop)->external_name(); 16.8 - const char* klassName = Klass::cast(klassOf)->external_name(); 16.9 + const char* objName = objKlassOop->external_name(); 16.10 + const char* klassName = klassOf->external_name(); 16.11 char* message = SharedRuntime::generate_class_cast_message( 16.12 objName, klassName); 16.13 VM_JAVA_ERROR(vmSymbols::java_lang_ClassCastException(), message);
17.1 --- a/src/share/vm/interpreter/interpreterRuntime.cpp Fri Nov 16 09:59:08 2012 +0100 17.2 +++ b/src/share/vm/interpreter/interpreterRuntime.cpp Fri Nov 16 09:19:12 2012 -0500 17.3 @@ -312,7 +312,7 @@ 17.4 17.5 IRT_ENTRY(void, InterpreterRuntime::create_klass_exception(JavaThread* thread, char* name, oopDesc* obj)) 17.6 ResourceMark rm(thread); 17.7 - const char* klass_name = Klass::cast(obj->klass())->external_name(); 17.8 + const char* klass_name = obj->klass()->external_name(); 17.9 // lookup exception klass 17.10 TempNewSymbol s = SymbolTable::new_symbol(name, CHECK); 17.11 if (ProfileTraps) { 17.12 @@ -341,7 +341,7 @@ 17.13 17.14 ResourceMark rm(thread); 17.15 char* message = SharedRuntime::generate_class_cast_message( 17.16 - thread, Klass::cast(obj->klass())->external_name()); 17.17 + thread, obj->klass()->external_name()); 17.18 17.19 if (ProfileTraps) { 17.20 note_trap(thread, Deoptimization::Reason_class_check, CHECK);
18.1 --- a/src/share/vm/interpreter/linkResolver.cpp Fri Nov 16 09:59:08 2012 +0100 18.2 +++ b/src/share/vm/interpreter/linkResolver.cpp Fri Nov 16 09:19:12 2012 -0500 18.3 @@ -203,7 +203,7 @@ 18.4 Method* result_oop = klass->uncached_lookup_method(name, signature); 18.5 result = methodHandle(THREAD, result_oop); 18.6 while (!result.is_null() && result->is_static()) { 18.7 - klass = KlassHandle(THREAD, Klass::cast(result->method_holder())->super()); 18.8 + klass = KlassHandle(THREAD, result->method_holder()->super()); 18.9 result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); 18.10 } 18.11 } 18.12 @@ -428,7 +428,7 @@ 18.13 // 3. method lookup failed 18.14 ResourceMark rm(THREAD); 18.15 THROW_MSG_CAUSE(vmSymbols::java_lang_NoSuchMethodError(), 18.16 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.17 + Method::name_and_sig_as_C_string(resolved_klass(), 18.18 method_name, 18.19 method_signature), 18.20 nested_exception); 18.21 @@ -448,7 +448,7 @@ 18.22 if (resolved_method->is_abstract() && !resolved_klass->is_abstract()) { 18.23 ResourceMark rm(THREAD); 18.24 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.25 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.26 + Method::name_and_sig_as_C_string(resolved_klass(), 18.27 method_name, 18.28 method_signature)); 18.29 } 18.30 @@ -477,7 +477,7 @@ 18.31 " \"%s\" the class loader (instance of %s) of the current class, %s," 18.32 " and the class loader (instance of %s) for resolved class, %s, have" 18.33 " different Class objects for the type %s used in the signature"; 18.34 - char* sig = Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature); 18.35 + char* sig = Method::name_and_sig_as_C_string(resolved_klass(),method_name,method_signature); 18.36 const char* loader1 = SystemDictionary::loader_name(loader()); 18.37 char* current = InstanceKlass::cast(current_klass())->name()->as_C_string(); 18.38 const char* loader2 = SystemDictionary::loader_name(class_loader()); 18.39 @@ -505,7 +505,7 @@ 18.40 if (!resolved_klass->is_interface()) { 18.41 ResourceMark rm(THREAD); 18.42 char buf[200]; 18.43 - jio_snprintf(buf, sizeof(buf), "Found class %s, but interface was expected", Klass::cast(resolved_klass())->external_name()); 18.44 + jio_snprintf(buf, sizeof(buf), "Found class %s, but interface was expected", resolved_klass()->external_name()); 18.45 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.46 } 18.47 18.48 @@ -519,7 +519,7 @@ 18.49 // no method found 18.50 ResourceMark rm(THREAD); 18.51 THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(), 18.52 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.53 + Method::name_and_sig_as_C_string(resolved_klass(), 18.54 method_name, 18.55 method_signature)); 18.56 } 18.57 @@ -540,7 +540,7 @@ 18.58 "current class, %s, and the class loader (instance of %s) for " 18.59 "resolved class, %s, have different Class objects for the type %s " 18.60 "used in the signature"; 18.61 - char* sig = Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature); 18.62 + char* sig = Method::name_and_sig_as_C_string(resolved_klass(),method_name,method_signature); 18.63 const char* loader1 = SystemDictionary::loader_name(loader()); 18.64 char* current = InstanceKlass::cast(current_klass())->name()->as_C_string(); 18.65 const char* loader2 = SystemDictionary::loader_name(class_loader()); 18.66 @@ -627,7 +627,7 @@ 18.67 if (is_static != fd.is_static()) { 18.68 ResourceMark rm(THREAD); 18.69 char msg[200]; 18.70 - jio_snprintf(msg, sizeof(msg), "Expected %s field %s.%s", is_static ? "static" : "non-static", Klass::cast(resolved_klass())->external_name(), fd.name()->as_C_string()); 18.71 + jio_snprintf(msg, sizeof(msg), "Expected %s field %s.%s", is_static ? "static" : "non-static", resolved_klass()->external_name(), fd.name()->as_C_string()); 18.72 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), msg); 18.73 } 18.74 18.75 @@ -701,7 +701,7 @@ 18.76 bool check_access, bool initialize_class, TRAPS) { 18.77 methodHandle resolved_method; 18.78 linktime_resolve_static_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); 18.79 - resolved_klass = KlassHandle(THREAD, Klass::cast(resolved_method->method_holder())); 18.80 + resolved_klass = KlassHandle(THREAD, resolved_method->method_holder()); 18.81 18.82 // Initialize klass (this should only happen if everything is ok) 18.83 if (initialize_class && resolved_klass->should_be_initialized()) { 18.84 @@ -725,7 +725,7 @@ 18.85 if (!resolved_method->is_static()) { 18.86 ResourceMark rm(THREAD); 18.87 char buf[200]; 18.88 - jio_snprintf(buf, sizeof(buf), "Expected static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.89 + jio_snprintf(buf, sizeof(buf), "Expected static method %s", Method::name_and_sig_as_C_string(resolved_klass(), 18.90 resolved_method->name(), 18.91 resolved_method->signature())); 18.92 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.93 @@ -789,7 +789,7 @@ 18.94 char buf[200]; 18.95 jio_snprintf(buf, sizeof(buf), 18.96 "Expecting non-static method %s", 18.97 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.98 + Method::name_and_sig_as_C_string(resolved_klass(), 18.99 resolved_method->name(), 18.100 resolved_method->signature())); 18.101 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.102 @@ -829,7 +829,7 @@ 18.103 if (sel_method.is_null()) { 18.104 ResourceMark rm(THREAD); 18.105 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.106 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.107 + Method::name_and_sig_as_C_string(resolved_klass(), 18.108 resolved_method->name(), 18.109 resolved_method->signature())); 18.110 } 18.111 @@ -840,7 +840,7 @@ 18.112 if (sel_method->is_static()) { 18.113 ResourceMark rm(THREAD); 18.114 char buf[200]; 18.115 - jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.116 + jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(resolved_klass(), 18.117 resolved_method->name(), 18.118 resolved_method->signature())); 18.119 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.120 @@ -850,7 +850,7 @@ 18.121 if (sel_method->is_abstract()) { 18.122 ResourceMark rm(THREAD); 18.123 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.124 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.125 + Method::name_and_sig_as_C_string(resolved_klass(), 18.126 sel_method->name(), 18.127 sel_method->signature())); 18.128 } 18.129 @@ -881,7 +881,7 @@ 18.130 if (resolved_method->is_static()) { 18.131 ResourceMark rm(THREAD); 18.132 char buf[200]; 18.133 - jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.134 + jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(resolved_klass(), 18.135 resolved_method->name(), 18.136 resolved_method->signature())); 18.137 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.138 @@ -950,7 +950,7 @@ 18.139 if (selected_method.is_null()) { 18.140 ResourceMark rm(THREAD); 18.141 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.142 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.143 + Method::name_and_sig_as_C_string(resolved_klass(), 18.144 resolved_method->name(), 18.145 resolved_method->signature())); 18.146 } 18.147 @@ -959,7 +959,7 @@ 18.148 if (check_null_and_abstract && selected_method->is_abstract()) { 18.149 ResourceMark rm(THREAD); 18.150 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.151 - Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()), 18.152 + Method::name_and_sig_as_C_string(resolved_klass(), 18.153 selected_method->name(), 18.154 selected_method->signature())); 18.155 } 18.156 @@ -999,8 +999,8 @@ 18.157 ResourceMark rm(THREAD); 18.158 char buf[200]; 18.159 jio_snprintf(buf, sizeof(buf), "Class %s does not implement the requested interface %s", 18.160 - (Klass::cast(recv_klass()))->external_name(), 18.161 - (Klass::cast(resolved_klass()))->external_name()); 18.162 + recv_klass()->external_name(), 18.163 + resolved_klass()->external_name()); 18.164 THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 18.165 } 18.166 // do lookup based on receiver klass 18.167 @@ -1012,7 +1012,7 @@ 18.168 if (sel_method.is_null()) { 18.169 ResourceMark rm(THREAD); 18.170 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.171 - Method::name_and_sig_as_C_string(Klass::cast(recv_klass()), 18.172 + Method::name_and_sig_as_C_string(recv_klass(), 18.173 resolved_method->name(), 18.174 resolved_method->signature())); 18.175 } 18.176 @@ -1020,7 +1020,7 @@ 18.177 if (!sel_method->is_public()) { 18.178 ResourceMark rm(THREAD); 18.179 THROW_MSG(vmSymbols::java_lang_IllegalAccessError(), 18.180 - Method::name_and_sig_as_C_string(Klass::cast(recv_klass()), 18.181 + Method::name_and_sig_as_C_string(recv_klass(), 18.182 sel_method->name(), 18.183 sel_method->signature())); 18.184 } 18.185 @@ -1028,7 +1028,7 @@ 18.186 if (check_null_and_abstract && sel_method->is_abstract()) { 18.187 ResourceMark rm(THREAD); 18.188 THROW_MSG(vmSymbols::java_lang_AbstractMethodError(), 18.189 - Method::name_and_sig_as_C_string(Klass::cast(recv_klass()), 18.190 + Method::name_and_sig_as_C_string(recv_klass(), 18.191 sel_method->name(), 18.192 sel_method->signature())); 18.193 }
19.1 --- a/src/share/vm/memory/metaspaceShared.cpp Fri Nov 16 09:59:08 2012 +0100 19.2 +++ b/src/share/vm/memory/metaspaceShared.cpp Fri Nov 16 09:19:12 2012 -0500 19.3 @@ -431,7 +431,7 @@ 19.4 } 19.5 19.6 static void link_shared_classes(Klass* obj, TRAPS) { 19.7 - Klass* k = Klass::cast(obj); 19.8 + Klass* k = obj; 19.9 if (k->oop_is_instance()) { 19.10 InstanceKlass* ik = (InstanceKlass*) k; 19.11 // Link the class to cause the bytecodes to be rewritten and the
20.1 --- a/src/share/vm/memory/universe.cpp Fri Nov 16 09:59:08 2012 +0100 20.2 +++ b/src/share/vm/memory/universe.cpp Fri Nov 16 09:19:12 2012 -0500 20.3 @@ -346,7 +346,7 @@ 20.4 // --- 20.5 // New 20.6 // Have already been initialized. 20.7 - Klass::cast(_objectArrayKlassObj)->append_to_sibling_list(); 20.8 + _objectArrayKlassObj->append_to_sibling_list(); 20.9 20.10 // Compute is_jdk version flags. 20.11 // Only 1.3 or later has the java.lang.Shutdown class.
21.1 --- a/src/share/vm/oops/arrayKlass.cpp Fri Nov 16 09:59:08 2012 +0100 21.2 +++ b/src/share/vm/oops/arrayKlass.cpp Fri Nov 16 09:19:12 2012 -0500 21.3 @@ -67,7 +67,7 @@ 21.4 Method* ArrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const { 21.5 // There are no methods in an array klass but the super class (Object) has some 21.6 assert(super(), "super klass must be present"); 21.7 - return Klass::cast(super())->uncached_lookup_method(name, signature); 21.8 + return super()->uncached_lookup_method(name, signature); 21.9 } 21.10 21.11 ArrayKlass::ArrayKlass(Symbol* name) {
22.1 --- a/src/share/vm/oops/cpCache.cpp Fri Nov 16 09:59:08 2012 +0100 22.2 +++ b/src/share/vm/oops/cpCache.cpp Fri Nov 16 09:19:12 2012 -0500 22.3 @@ -371,7 +371,7 @@ 22.4 int holder_index = cpool->uncached_klass_ref_index_at(constant_pool_index()); 22.5 if (cpool->tag_at(holder_index).is_klass()) { 22.6 Klass* klass = cpool->resolved_klass_at(holder_index); 22.7 - if (!Klass::cast(klass)->oop_is_instance()) 22.8 + if (!klass->oop_is_instance()) 22.9 klass = SystemDictionary::Object_klass(); 22.10 return InstanceKlass::cast(klass)->method_at_vtable(f2_as_index()); 22.11 }
23.1 --- a/src/share/vm/oops/instanceKlass.cpp Fri Nov 16 09:59:08 2012 +0100 23.2 +++ b/src/share/vm/oops/instanceKlass.cpp Fri Nov 16 09:19:12 2012 -0500 23.3 @@ -727,8 +727,8 @@ 23.4 23.5 // Step 7 23.6 Klass* super_klass = this_oop->super(); 23.7 - if (super_klass != NULL && !this_oop->is_interface() && Klass::cast(super_klass)->should_be_initialized()) { 23.8 - Klass::cast(super_klass)->initialize(THREAD); 23.9 + if (super_klass != NULL && !this_oop->is_interface() && super_klass->should_be_initialized()) { 23.10 + super_klass->initialize(THREAD); 23.11 23.12 if (HAS_PENDING_EXCEPTION) { 23.13 Handle e(THREAD, PENDING_EXCEPTION); 23.14 @@ -924,7 +924,7 @@ 23.15 } 23.16 23.17 bool InstanceKlass::compute_is_subtype_of(Klass* k) { 23.18 - if (Klass::cast(k)->is_interface()) { 23.19 + if (k->is_interface()) { 23.20 return implements_interface(k); 23.21 } else { 23.22 return Klass::compute_is_subtype_of(k); 23.23 @@ -933,7 +933,7 @@ 23.24 23.25 bool InstanceKlass::implements_interface(Klass* k) const { 23.26 if (this == k) return true; 23.27 - assert(Klass::cast(k)->is_interface(), "should be an interface class"); 23.28 + assert(k->is_interface(), "should be an interface class"); 23.29 for (int i = 0; i < transitive_interfaces()->length(); i++) { 23.30 if (transitive_interfaces()->at(i) == k) { 23.31 return true; 23.32 @@ -1107,7 +1107,7 @@ 23.33 const int n = local_interfaces()->length(); 23.34 for (int i = 0; i < n; i++) { 23.35 Klass* intf1 = local_interfaces()->at(i); 23.36 - assert(Klass::cast(intf1)->is_interface(), "just checking type"); 23.37 + assert(intf1->is_interface(), "just checking type"); 23.38 // search for field in current interface 23.39 if (InstanceKlass::cast(intf1)->find_local_field(name, sig, fd)) { 23.40 assert(fd->is_static(), "interface field must be static"); 23.41 @@ -1178,7 +1178,7 @@ 23.42 if (InstanceKlass::cast(klass)->find_local_field_from_offset(offset, is_static, fd)) { 23.43 return true; 23.44 } 23.45 - klass = Klass::cast(klass)->super(); 23.46 + klass = klass->super(); 23.47 } 23.48 return false; 23.49 } 23.50 @@ -2366,19 +2366,19 @@ 23.51 bool InstanceKlass::is_same_class_package(Klass* class2) { 23.52 Klass* class1 = this; 23.53 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); 23.54 - Symbol* classname1 = Klass::cast(class1)->name(); 23.55 - 23.56 - if (Klass::cast(class2)->oop_is_objArray()) { 23.57 + Symbol* classname1 = class1->name(); 23.58 + 23.59 + if (class2->oop_is_objArray()) { 23.60 class2 = ObjArrayKlass::cast(class2)->bottom_klass(); 23.61 } 23.62 oop classloader2; 23.63 - if (Klass::cast(class2)->oop_is_instance()) { 23.64 + if (class2->oop_is_instance()) { 23.65 classloader2 = InstanceKlass::cast(class2)->class_loader(); 23.66 } else { 23.67 - assert(Klass::cast(class2)->oop_is_typeArray(), "should be type array"); 23.68 + assert(class2->oop_is_typeArray(), "should be type array"); 23.69 classloader2 = NULL; 23.70 } 23.71 - Symbol* classname2 = Klass::cast(class2)->name(); 23.72 + Symbol* classname2 = class2->name(); 23.73 23.74 return InstanceKlass::is_same_class_package(classloader1, classname1, 23.75 classloader2, classname2); 23.76 @@ -2387,7 +2387,7 @@ 23.77 bool InstanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) { 23.78 Klass* class1 = this; 23.79 oop classloader1 = InstanceKlass::cast(class1)->class_loader(); 23.80 - Symbol* classname1 = Klass::cast(class1)->name(); 23.81 + Symbol* classname1 = class1->name(); 23.82 23.83 return InstanceKlass::is_same_class_package(classloader1, classname1, 23.84 classloader2, classname2); 23.85 @@ -2478,7 +2478,7 @@ 23.86 bool InstanceKlass::is_same_package_member_impl(instanceKlassHandle class1, 23.87 Klass* class2_oop, TRAPS) { 23.88 if (class2_oop == class1()) return true; 23.89 - if (!Klass::cast(class2_oop)->oop_is_instance()) return false; 23.90 + if (!class2_oop->oop_is_instance()) return false; 23.91 instanceKlassHandle class2(THREAD, class2_oop); 23.92 23.93 // must be in same package before we try anything else 23.94 @@ -3011,7 +3011,7 @@ 23.95 if (im != NULL) { 23.96 guarantee(is_interface(), "only interfaces should have implementor set"); 23.97 guarantee(im->is_klass(), "should be klass"); 23.98 - guarantee(!Klass::cast(im)->is_interface() || im == this, 23.99 + guarantee(!im->is_interface() || im == this, 23.100 "implementors cannot be interfaces"); 23.101 } 23.102 23.103 @@ -3020,7 +3020,7 @@ 23.104 Array<Klass*>* local_interfaces = this->local_interfaces(); 23.105 for (int j = 0; j < local_interfaces->length(); j++) { 23.106 Klass* e = local_interfaces->at(j); 23.107 - guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid local interface"); 23.108 + guarantee(e->is_klass() && e->is_interface(), "invalid local interface"); 23.109 } 23.110 } 23.111 23.112 @@ -3029,7 +3029,7 @@ 23.113 Array<Klass*>* transitive_interfaces = this->transitive_interfaces(); 23.114 for (int j = 0; j < transitive_interfaces->length(); j++) { 23.115 Klass* e = transitive_interfaces->at(j); 23.116 - guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid transitive interface"); 23.117 + guarantee(e->is_klass() && e->is_interface(), "invalid transitive interface"); 23.118 } 23.119 } 23.120
24.1 --- a/src/share/vm/oops/klass.cpp Fri Nov 16 09:59:08 2012 +0100 24.2 +++ b/src/share/vm/oops/klass.cpp Fri Nov 16 09:19:12 2012 -0500 24.3 @@ -56,7 +56,7 @@ 24.4 24.5 while (t != NULL) { 24.6 if (t == k) return true; 24.7 - t = Klass::cast(t)->super(); 24.8 + t = t->super(); 24.9 } 24.10 return false; 24.11 } 24.12 @@ -243,16 +243,16 @@ 24.13 juint j = super_depth(); 24.14 assert(j == my_depth, "computed accessor gets right answer"); 24.15 Klass* t = this; 24.16 - while (!Klass::cast(t)->can_be_primary_super()) { 24.17 - t = Klass::cast(t)->super(); 24.18 - j = Klass::cast(t)->super_depth(); 24.19 + while (!t->can_be_primary_super()) { 24.20 + t = t->super(); 24.21 + j = t->super_depth(); 24.22 } 24.23 for (juint j1 = j+1; j1 < primary_super_limit(); j1++) { 24.24 assert(primary_super_of_depth(j1) == NULL, "super list padding"); 24.25 } 24.26 while (t != NULL) { 24.27 assert(primary_super_of_depth(j) == t, "super list initialization"); 24.28 - t = Klass::cast(t)->super(); 24.29 + t = t->super(); 24.30 --j; 24.31 } 24.32 assert(j == (juint)-1, "correct depth count"); 24.33 @@ -333,7 +333,7 @@ 24.34 24.35 24.36 Klass* Klass::subklass() const { 24.37 - return _subklass == NULL ? NULL : Klass::cast(_subklass); 24.38 + return _subklass == NULL ? NULL : _subklass; 24.39 } 24.40 24.41 InstanceKlass* Klass::superklass() const { 24.42 @@ -342,7 +342,7 @@ 24.43 } 24.44 24.45 Klass* Klass::next_sibling() const { 24.46 - return _next_sibling == NULL ? NULL : Klass::cast(_next_sibling); 24.47 + return _next_sibling == NULL ? NULL : _next_sibling; 24.48 } 24.49 24.50 void Klass::set_subklass(Klass* s) {
25.1 --- a/src/share/vm/oops/klass.hpp Fri Nov 16 09:59:08 2012 +0100 25.2 +++ b/src/share/vm/oops/klass.hpp Fri Nov 16 09:19:12 2012 -0500 25.3 @@ -422,12 +422,6 @@ 25.4 // if not, throw either an Error or an Exception. 25.5 virtual void check_valid_for_instantiation(bool throwError, TRAPS); 25.6 25.7 - // Casting 25.8 - static Klass* cast(Klass* k) { 25.9 - assert(k->is_klass(), "cast to Klass"); 25.10 - return k; 25.11 - } 25.12 - 25.13 // array copying 25.14 virtual void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); 25.15
26.1 --- a/src/share/vm/oops/klassVtable.cpp Fri Nov 16 09:59:08 2012 +0100 26.2 +++ b/src/share/vm/oops/klassVtable.cpp Fri Nov 16 09:19:12 2012 -0500 26.3 @@ -746,7 +746,7 @@ 26.4 while (target != NULL && target->is_static()) { 26.5 // continue with recursive lookup through the superclass 26.6 Klass* super = target->method_holder()->super(); 26.7 - target = (super == NULL) ? (Method*)NULL : Klass::cast(super)->uncached_lookup_method(method_name, method_signature); 26.8 + target = (super == NULL) ? (Method*)NULL : super->uncached_lookup_method(method_name, method_signature); 26.9 } 26.10 if (target == NULL || !target->is_public() || target->is_abstract()) { 26.11 // Entry do not resolve. Leave it empty 26.12 @@ -852,7 +852,7 @@ 26.13 // Handle array argument 26.14 for(int i = 0; i < transitive_intf->length(); i++) { 26.15 Klass* intf = transitive_intf->at(i); 26.16 - assert(Klass::cast(intf)->is_interface(), "sanity check"); 26.17 + assert(intf->is_interface(), "sanity check"); 26.18 26.19 // Find no. of methods excluding a <clinit> 26.20 int method_count = InstanceKlass::cast(intf)->methods()->length();
27.1 --- a/src/share/vm/oops/method.cpp Fri Nov 16 09:59:08 2012 +0100 27.2 +++ b/src/share/vm/oops/method.cpp Fri Nov 16 09:19:12 2012 -0500 27.3 @@ -152,11 +152,11 @@ 27.4 } 27.5 27.6 char* Method::name_and_sig_as_C_string() const { 27.7 - return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature()); 27.8 + return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature()); 27.9 } 27.10 27.11 char* Method::name_and_sig_as_C_string(char* buf, int size) const { 27.12 - return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature(), buf, size); 27.13 + return name_and_sig_as_C_string(constants()->pool_holder(), name(), signature(), buf, size); 27.14 } 27.15 27.16 char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) { 27.17 @@ -578,8 +578,8 @@ 27.18 for (int i = 0; i < length; i++) { 27.19 CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe 27.20 Klass* k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle())); 27.21 - assert(Klass::cast(k)->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class"); 27.22 - mirrors->obj_at_put(i, Klass::cast(k)->java_mirror()); 27.23 + assert(k->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class"); 27.24 + mirrors->obj_at_put(i, k->java_mirror()); 27.25 } 27.26 return mirrors; 27.27 } 27.28 @@ -618,7 +618,7 @@ 27.29 Thread *thread = Thread::current(); 27.30 Symbol* klass_name = constants()->klass_name_at(klass_index); 27.31 Handle loader(thread, method_holder()->class_loader()); 27.32 - Handle prot (thread, Klass::cast(method_holder())->protection_domain()); 27.33 + Handle prot (thread, method_holder()->protection_domain()); 27.34 return SystemDictionary::find(klass_name, loader, prot, thread) != NULL; 27.35 } else { 27.36 return true; 27.37 @@ -1067,8 +1067,8 @@ 27.38 } 27.39 27.40 Klass* Method::check_non_bcp_klass(Klass* klass) { 27.41 - if (klass != NULL && Klass::cast(klass)->class_loader() != NULL) { 27.42 - if (Klass::cast(klass)->oop_is_objArray()) 27.43 + if (klass != NULL && klass->class_loader() != NULL) { 27.44 + if (klass->oop_is_objArray()) 27.45 klass = ObjArrayKlass::cast(klass)->bottom_klass(); 27.46 return klass; 27.47 }
28.1 --- a/src/share/vm/oops/objArrayKlass.cpp Fri Nov 16 09:59:08 2012 +0100 28.2 +++ b/src/share/vm/oops/objArrayKlass.cpp Fri Nov 16 09:19:12 2012 -0500 28.3 @@ -81,7 +81,7 @@ 28.4 Array<Klass*>* element_supers = element_klass->secondary_supers(); 28.5 for( int i = element_supers->length()-1; i >= 0; i-- ) { 28.6 Klass* elem_super = element_supers->at(i); 28.7 - if (Klass::cast(elem_super)->array_klass_or_null() == NULL) { 28.8 + if (elem_super->array_klass_or_null() == NULL) { 28.9 supers_exist = false; 28.10 break; 28.11 } 28.12 @@ -172,7 +172,7 @@ 28.13 } else { 28.14 bk = element_klass(); 28.15 } 28.16 - assert(bk != NULL && (Klass::cast(bk)->oop_is_instance() || Klass::cast(bk)->oop_is_typeArray()), "invalid bottom klass"); 28.17 + assert(bk != NULL && (bk->oop_is_instance() || bk->oop_is_typeArray()), "invalid bottom klass"); 28.18 this->set_bottom_klass(bk); 28.19 this->set_class_loader_data(bk->class_loader_data()); 28.20 28.21 @@ -254,7 +254,7 @@ 28.22 // We have to make sure all elements conform to the destination array 28.23 Klass* bound = ObjArrayKlass::cast(d->klass())->element_klass(); 28.24 Klass* stype = ObjArrayKlass::cast(s->klass())->element_klass(); 28.25 - if (stype == bound || Klass::cast(stype)->is_subtype_of(bound)) { 28.26 + if (stype == bound || stype->is_subtype_of(bound)) { 28.27 // elements are guaranteed to be subtypes, so no check necessary 28.28 bs->write_ref_array_pre(dst, length); 28.29 Copy::conjoint_oops_atomic(src, dst, length); 28.30 @@ -271,7 +271,7 @@ 28.31 oop new_val = element_is_null ? oop(NULL) 28.32 : oopDesc::decode_heap_oop_not_null(element); 28.33 if (element_is_null || 28.34 - Klass::cast((new_val->klass()))->is_subtype_of(bound)) { 28.35 + (new_val->klass())->is_subtype_of(bound)) { 28.36 bs->write_ref_field_pre(p, new_val); 28.37 *p = *from; 28.38 } else { 28.39 @@ -381,7 +381,7 @@ 28.40 28.41 GrowableArray<Klass*>* ObjArrayKlass::compute_secondary_supers(int num_extra_slots) { 28.42 // interfaces = { cloneable_klass, serializable_klass, elemSuper[], ... }; 28.43 - Array<Klass*>* elem_supers = Klass::cast(element_klass())->secondary_supers(); 28.44 + Array<Klass*>* elem_supers = element_klass()->secondary_supers(); 28.45 int num_elem_supers = elem_supers == NULL ? 0 : elem_supers->length(); 28.46 int num_secondaries = num_extra_slots + 2 + num_elem_supers; 28.47 if (num_secondaries == 2) { 28.48 @@ -411,7 +411,7 @@ 28.49 } 28.50 28.51 void ObjArrayKlass::initialize(TRAPS) { 28.52 - Klass::cast(bottom_klass())->initialize(THREAD); // dispatches to either InstanceKlass or TypeArrayKlass 28.53 + bottom_klass()->initialize(THREAD); // dispatches to either InstanceKlass or TypeArrayKlass 28.54 } 28.55 28.56 #define ObjArrayKlass_SPECIALIZED_OOP_ITERATE(T, a, p, do_oop) \ 28.57 @@ -607,7 +607,7 @@ 28.58 return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC; 28.59 } 28.60 // Return the flags of the bottom element type. 28.61 - jint element_flags = Klass::cast(bottom_klass())->compute_modifier_flags(CHECK_0); 28.62 + jint element_flags = bottom_klass()->compute_modifier_flags(CHECK_0); 28.63 28.64 return (element_flags & (JVM_ACC_PUBLIC | JVM_ACC_PRIVATE | JVM_ACC_PROTECTED)) 28.65 | (JVM_ACC_ABSTRACT | JVM_ACC_FINAL); 28.66 @@ -686,7 +686,7 @@ 28.67 guarantee(element_klass()->is_klass(), "should be klass"); 28.68 guarantee(bottom_klass()->is_metadata(), "should be in metaspace"); 28.69 guarantee(bottom_klass()->is_klass(), "should be klass"); 28.70 - Klass* bk = Klass::cast(bottom_klass()); 28.71 + Klass* bk = bottom_klass(); 28.72 guarantee(bk->oop_is_instance() || bk->oop_is_typeArray(), "invalid bottom klass"); 28.73 } 28.74
29.1 --- a/src/share/vm/oops/objArrayKlass.hpp Fri Nov 16 09:59:08 2012 +0100 29.2 +++ b/src/share/vm/oops/objArrayKlass.hpp Fri Nov 16 09:19:12 2012 -0500 29.3 @@ -74,7 +74,7 @@ 29.4 void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); 29.5 29.6 // Compute protection domain 29.7 - oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); } 29.8 + oop protection_domain() { return bottom_klass()->protection_domain(); } 29.9 29.10 private: 29.11 // Either oop or narrowOop depending on UseCompressedOops.
30.1 --- a/src/share/vm/opto/runtime.cpp Fri Nov 16 09:59:08 2012 +0100 30.2 +++ b/src/share/vm/opto/runtime.cpp Fri Nov 16 09:19:12 2012 -0500 30.3 @@ -236,7 +236,7 @@ 30.4 assert(check_compiled_frame(thread), "incorrect caller"); 30.5 30.6 // These checks are cheap to make and support reflective allocation. 30.7 - int lh = Klass::cast(klass)->layout_helper(); 30.8 + int lh = klass->layout_helper(); 30.9 if (Klass::layout_helper_needs_slow_path(lh) 30.10 || !InstanceKlass::cast(klass)->is_initialized()) { 30.11 KlassHandle kh(THREAD, klass); 30.12 @@ -283,7 +283,7 @@ 30.13 // Scavenge and allocate an instance. 30.14 oop result; 30.15 30.16 - if (Klass::cast(array_type)->oop_is_typeArray()) { 30.17 + if (array_type->oop_is_typeArray()) { 30.18 // The oopFactory likes to work with the element type. 30.19 // (We could bypass the oopFactory, since it doesn't add much value.) 30.20 BasicType elem_type = TypeArrayKlass::cast(array_type)->element_type(); 30.21 @@ -321,7 +321,7 @@ 30.22 // Scavenge and allocate an instance. 30.23 oop result; 30.24 30.25 - assert(Klass::cast(array_type)->oop_is_typeArray(), "should be called only for type array"); 30.26 + assert(array_type->oop_is_typeArray(), "should be called only for type array"); 30.27 // The oopFactory likes to work with the element type. 30.28 BasicType elem_type = TypeArrayKlass::cast(array_type)->element_type(); 30.29 result = oopFactory::new_typeArray_nozero(elem_type, len, THREAD);
31.1 --- a/src/share/vm/prims/jni.cpp Fri Nov 16 09:59:08 2012 +0100 31.2 +++ b/src/share/vm/prims/jni.cpp Fri Nov 16 09:19:12 2012 -0500 31.3 @@ -234,13 +234,13 @@ 31.4 intptr_t jfieldIDWorkaround::encode_klass_hash(Klass* k, intptr_t offset) { 31.5 if (offset <= small_offset_mask) { 31.6 Klass* field_klass = k; 31.7 - Klass* super_klass = Klass::cast(field_klass)->super(); 31.8 + Klass* super_klass = field_klass->super(); 31.9 // With compressed oops the most super class with nonstatic fields would 31.10 // be the owner of fields embedded in the header. 31.11 while (InstanceKlass::cast(super_klass)->has_nonstatic_fields() && 31.12 InstanceKlass::cast(super_klass)->contains_field_offset(offset)) { 31.13 field_klass = super_klass; // super contains the field also 31.14 - super_klass = Klass::cast(field_klass)->super(); 31.15 + super_klass = field_klass->super(); 31.16 } 31.17 debug_only(No_Safepoint_Verifier nosafepoint;) 31.18 uintptr_t klass_hash = field_klass->identity_hash(); 31.19 @@ -250,7 +250,7 @@ 31.20 #ifndef PRODUCT 31.21 { 31.22 ResourceMark rm; 31.23 - warning("VerifyJNIFields: long offset %d in %s", offset, Klass::cast(k)->external_name()); 31.24 + warning("VerifyJNIFields: long offset %d in %s", offset, k->external_name()); 31.25 } 31.26 #endif 31.27 #endif 31.28 @@ -266,7 +266,7 @@ 31.29 // Could use a non-blocking query for identity_hash here... 31.30 if ((k->identity_hash() & klass_mask) == klass_hash) 31.31 return true; 31.32 - k = Klass::cast(k)->super(); 31.33 + k = k->super(); 31.34 } while (k != NULL); 31.35 return false; 31.36 } 31.37 @@ -284,7 +284,7 @@ 31.38 #ifndef PRODUCT 31.39 if (Verbose) { 31.40 ResourceMark rm; 31.41 - warning("VerifyJNIFields: unverified offset %d for %s", offset, Klass::cast(k)->external_name()); 31.42 + warning("VerifyJNIFields: unverified offset %d for %s", offset, k->external_name()); 31.43 } 31.44 #endif 31.45 #endif 31.46 @@ -416,7 +416,7 @@ 31.47 } 31.48 31.49 cls = (jclass)JNIHandles::make_local( 31.50 - env, Klass::cast(k)->java_mirror()); 31.51 + env, k->java_mirror()); 31.52 return cls; 31.53 JNI_END 31.54 31.55 @@ -537,7 +537,7 @@ 31.56 31.57 KlassHandle k1(THREAD, k); 31.58 // Make sure class is initialized before handing id's out to methods 31.59 - Klass::cast(k1())->initialize(CHECK_NULL); 31.60 + k1()->initialize(CHECK_NULL); 31.61 Method* m = InstanceKlass::cast(k1())->method_with_idnum(slot); 31.62 ret = m==NULL? NULL : m->jmethod_id(); // return NULL if reflected method deleted 31.63 return ret; 31.64 @@ -570,7 +570,7 @@ 31.65 31.66 KlassHandle k1(THREAD, k); 31.67 // Make sure class is initialized before handing id's out to fields 31.68 - Klass::cast(k1())->initialize(CHECK_NULL); 31.69 + k1()->initialize(CHECK_NULL); 31.70 31.71 // First check if this is a static field 31.72 if (modifiers & JVM_ACC_STATIC) { 31.73 @@ -649,17 +649,17 @@ 31.74 // interfaces return NULL 31.75 // proper classes return Klass::super() 31.76 Klass* k = java_lang_Class::as_Klass(mirror); 31.77 - if (Klass::cast(k)->is_interface()) return NULL; 31.78 + if (k->is_interface()) return NULL; 31.79 31.80 // return mirror for superclass 31.81 - Klass* super = Klass::cast(k)->java_super(); 31.82 + Klass* super = k->java_super(); 31.83 // super2 is the value computed by the compiler's getSuperClass intrinsic: 31.84 - debug_only(Klass* super2 = ( Klass::cast(k)->oop_is_array() 31.85 + debug_only(Klass* super2 = ( k->oop_is_array() 31.86 ? SystemDictionary::Object_klass() 31.87 - : Klass::cast(k)->super() ) ); 31.88 + : k->super() ) ); 31.89 assert(super == super2, 31.90 "java_super computation depends on interface, array, other super"); 31.91 - obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(Klass::cast(super)->java_mirror()); 31.92 + obj = (super == NULL) ? NULL : (jclass) JNIHandles::make_local(super->java_mirror()); 31.93 return obj; 31.94 JNI_END 31.95 31.96 @@ -687,7 +687,7 @@ 31.97 Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); 31.98 Klass* super_klass = java_lang_Class::as_Klass(super_mirror); 31.99 assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom"); 31.100 - jboolean ret = Klass::cast(sub_klass)->is_subtype_of(super_klass) ? 31.101 + jboolean ret = sub_klass->is_subtype_of(super_klass) ? 31.102 JNI_TRUE : JNI_FALSE; 31.103 #ifndef USDT2 31.104 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); 31.105 @@ -821,7 +821,7 @@ 31.106 ResourceMark rm(THREAD); 31.107 jio_fprintf(defaultStream::error_stream(), 31.108 ". Uncaught exception of type %s.", 31.109 - Klass::cast(ex->klass())->external_name()); 31.110 + ex->klass()->external_name()); 31.111 } 31.112 } 31.113 } 31.114 @@ -1359,7 +1359,7 @@ 31.115 Method* m = Method::resolve_jmethod_id(method_id); 31.116 number_of_parameters = m->size_of_parameters(); 31.117 Klass* holder = m->method_holder(); 31.118 - if (!(Klass::cast(holder))->is_interface()) { 31.119 + if (!(holder)->is_interface()) { 31.120 // non-interface call -- for that little speed boost, don't handlize 31.121 debug_only(No_Safepoint_Verifier nosafepoint;) 31.122 if (call_type == JNI_VIRTUAL) { 31.123 @@ -1424,7 +1424,7 @@ 31.124 31.125 static instanceOop alloc_object(jclass clazz, TRAPS) { 31.126 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 31.127 - Klass::cast(k())->check_valid_for_instantiation(false, CHECK_NULL); 31.128 + k()->check_valid_for_instantiation(false, CHECK_NULL); 31.129 InstanceKlass::cast(k())->initialize(CHECK_NULL); 31.130 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); 31.131 return ih; 31.132 @@ -1546,7 +1546,7 @@ 31.133 #endif /* USDT2 */ 31.134 Klass* k = JNIHandles::resolve_non_null(obj)->klass(); 31.135 jclass ret = 31.136 - (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); 31.137 + (jclass) JNIHandles::make_local(env, k->java_mirror()); 31.138 #ifndef USDT2 31.139 DTRACE_PROBE1(hotspot_jni, GetObjectClass__return, ret); 31.140 #else /* USDT2 */ 31.141 @@ -1611,7 +1611,7 @@ 31.142 31.143 // Make sure class is linked and initialized before handing id's out to 31.144 // Method*s. 31.145 - Klass::cast(klass())->initialize(CHECK_NULL); 31.146 + klass()->initialize(CHECK_NULL); 31.147 31.148 Method* m; 31.149 if (name == vmSymbols::object_initializer_name() || 31.150 @@ -2427,7 +2427,7 @@ 31.151 JNI_ArgumentPusherVaArg ap(methodID, args); \ 31.152 /* Make sure class is initialized before trying to invoke its method */ \ 31.153 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls))); \ 31.154 - Klass::cast(k())->initialize(CHECK_0); \ 31.155 + k()->initialize(CHECK_0); \ 31.156 jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ 31.157 va_end(args); \ 31.158 ret = jvalue.get_##ResultType(); \ 31.159 @@ -2612,10 +2612,10 @@ 31.160 KlassHandle k(THREAD, 31.161 java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 31.162 // Make sure class is initialized before handing id's out to fields 31.163 - Klass::cast(k())->initialize(CHECK_NULL); 31.164 + k()->initialize(CHECK_NULL); 31.165 31.166 fieldDescriptor fd; 31.167 - if (!Klass::cast(k())->oop_is_instance() || 31.168 + if (!k()->oop_is_instance() || 31.169 !InstanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) { 31.170 THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); 31.171 } 31.172 @@ -2977,10 +2977,10 @@ 31.173 KlassHandle k(THREAD, 31.174 java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); 31.175 // Make sure class is initialized before handing id's out to static fields 31.176 - Klass::cast(k())->initialize(CHECK_NULL); 31.177 + k()->initialize(CHECK_NULL); 31.178 31.179 fieldDescriptor fd; 31.180 - if (!Klass::cast(k())->oop_is_instance() || 31.181 + if (!k()->oop_is_instance() || 31.182 !InstanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) { 31.183 THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); 31.184 } 31.185 @@ -3440,7 +3440,7 @@ 31.186 jobjectArray ret = NULL; 31.187 DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret); 31.188 KlassHandle ek(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(elementClass))); 31.189 - Klass* ako = Klass::cast(ek())->array_klass(CHECK_NULL); 31.190 + Klass* ako = ek()->array_klass(CHECK_NULL); 31.191 KlassHandle ak = KlassHandle(THREAD, ako); 31.192 ObjArrayKlass::cast(ak())->initialize(CHECK_NULL); 31.193 objArrayOop result = ObjArrayKlass::cast(ak())->allocate(length, CHECK_NULL); 31.194 @@ -3971,7 +3971,7 @@ 31.195 if (trial_name == NULL) { 31.196 continue; // no such symbol, so this prefix wasn't used, try the next prefix 31.197 } 31.198 - method = Klass::cast(k())->lookup_method(trial_name, signature); 31.199 + method = k()->lookup_method(trial_name, signature); 31.200 if (method == NULL) { 31.201 continue; // signature doesn't match, try the next prefix 31.202 } 31.203 @@ -3988,12 +3988,12 @@ 31.204 } 31.205 31.206 static bool register_native(KlassHandle k, Symbol* name, Symbol* signature, address entry, TRAPS) { 31.207 - Method* method = Klass::cast(k())->lookup_method(name, signature); 31.208 + Method* method = k()->lookup_method(name, signature); 31.209 if (method == NULL) { 31.210 ResourceMark rm; 31.211 stringStream st; 31.212 st.print("Method %s name or signature does not match", 31.213 - Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); 31.214 + Method::name_and_sig_as_C_string(k(), name, signature)); 31.215 THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); 31.216 } 31.217 if (!method->is_native()) { 31.218 @@ -4003,7 +4003,7 @@ 31.219 ResourceMark rm; 31.220 stringStream st; 31.221 st.print("Method %s is not declared as native", 31.222 - Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); 31.223 + Method::name_and_sig_as_C_string(k(), name, signature)); 31.224 THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); 31.225 } 31.226 } 31.227 @@ -4059,7 +4059,7 @@ 31.228 if (name == NULL || signature == NULL) { 31.229 ResourceMark rm; 31.230 stringStream st; 31.231 - st.print("Method %s.%s%s not found", Klass::cast(h_k())->external_name(), meth_name, meth_sig); 31.232 + st.print("Method %s.%s%s not found", h_k()->external_name(), meth_name, meth_sig); 31.233 // Must return negative value on failure 31.234 THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), -1); 31.235 } 31.236 @@ -4085,7 +4085,7 @@ 31.237 #endif /* USDT2 */ 31.238 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); 31.239 //%note jni_2 31.240 - if (Klass::cast(k)->oop_is_instance()) { 31.241 + if (k->oop_is_instance()) { 31.242 for (int index = 0; index < InstanceKlass::cast(k)->methods()->length(); index++) { 31.243 Method* m = InstanceKlass::cast(k)->methods()->at(index); 31.244 if (m->is_native()) {
32.1 --- a/src/share/vm/prims/jniCheck.cpp Fri Nov 16 09:59:08 2012 +0100 32.2 +++ b/src/share/vm/prims/jniCheck.cpp Fri Nov 16 09:19:12 2012 -0500 32.3 @@ -383,7 +383,7 @@ 32.4 ASSERT_OOPS_ALLOWED; 32.5 assert(klass != NULL, "klass argument must have a value"); 32.6 32.7 - if (!Klass::cast(klass)->oop_is_instance() || 32.8 + if (!klass->oop_is_instance() || 32.9 !InstanceKlass::cast(klass)->is_subclass_of(SystemDictionary::Throwable_klass())) { 32.10 ReportJNIFatalError(thr, fatal_class_not_a_throwable_class); 32.11 }
33.1 --- a/src/share/vm/prims/jvm.cpp Fri Nov 16 09:59:08 2012 +0100 33.2 +++ b/src/share/vm/prims/jvm.cpp Fri Nov 16 09:19:12 2012 -0500 33.3 @@ -305,7 +305,7 @@ 33.4 assert(s->is_oop(), "JVM_ArrayCopy: src not an oop"); 33.5 assert(d->is_oop(), "JVM_ArrayCopy: dst not an oop"); 33.6 // Do copy 33.7 - Klass::cast(s->klass())->copy_array(s, src_pos, d, dst_pos, length, thread); 33.8 + s->klass()->copy_array(s, src_pos, d, dst_pos, length, thread); 33.9 JVM_END 33.10 33.11 33.12 @@ -675,7 +675,7 @@ 33.13 JVM_ENTRY(jclass, JVM_GetCallerClass(JNIEnv* env, int depth)) 33.14 JVMWrapper("JVM_GetCallerClass"); 33.15 Klass* k = thread->security_get_caller_class(depth); 33.16 - return (k == NULL) ? NULL : (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); 33.17 + return (k == NULL) ? NULL : (jclass) JNIHandles::make_local(env, k->java_mirror()); 33.18 JVM_END 33.19 33.20 33.21 @@ -739,7 +739,7 @@ 33.22 if (TraceClassResolution) { 33.23 trace_class_resolution(k); 33.24 } 33.25 - return (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); 33.26 + return (jclass) JNIHandles::make_local(env, k->java_mirror()); 33.27 JVM_END 33.28 33.29 JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, 33.30 @@ -785,8 +785,8 @@ 33.31 oop class_loader = NULL; 33.32 oop protection_domain = NULL; 33.33 if (from_class != NULL) { 33.34 - class_loader = Klass::cast(from_class)->class_loader(); 33.35 - protection_domain = Klass::cast(from_class)->protection_domain(); 33.36 + class_loader = from_class->class_loader(); 33.37 + protection_domain = from_class->protection_domain(); 33.38 } 33.39 Handle h_loader(THREAD, class_loader); 33.40 Handle h_prot (THREAD, protection_domain); 33.41 @@ -798,11 +798,11 @@ 33.42 ResourceMark rm; 33.43 oop from_mirror = JNIHandles::resolve_non_null(from); 33.44 Klass* from_class = java_lang_Class::as_Klass(from_mirror); 33.45 - const char * from_name = Klass::cast(from_class)->external_name(); 33.46 + const char * from_name = from_class->external_name(); 33.47 33.48 oop mirror = JNIHandles::resolve_non_null(result); 33.49 Klass* to_class = java_lang_Class::as_Klass(mirror); 33.50 - const char * to = Klass::cast(to_class)->external_name(); 33.51 + const char * to = to_class->external_name(); 33.52 tty->print("RESOLVE %s %s (verification)\n", from_name, to); 33.53 } 33.54 33.55 @@ -875,7 +875,7 @@ 33.56 trace_class_resolution(k); 33.57 } 33.58 33.59 - return (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); 33.60 + return (jclass) JNIHandles::make_local(env, k->java_mirror()); 33.61 } 33.62 33.63 33.64 @@ -936,7 +936,7 @@ 33.65 CHECK_NULL); 33.66 33.67 return (k == NULL) ? NULL : 33.68 - (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); 33.69 + (jclass) JNIHandles::make_local(env, k->java_mirror()); 33.70 JVM_END 33.71 33.72 33.73 @@ -954,7 +954,7 @@ 33.74 // Consider caching interned string in Klass 33.75 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 33.76 assert(k->is_klass(), "just checking"); 33.77 - name = Klass::cast(k)->external_name(); 33.78 + name = k->external_name(); 33.79 } 33.80 oop result = StringTable::intern((char*) name, CHECK_NULL); 33.81 return (jstring) JNIHandles::make_local(env, result); 33.82 @@ -991,12 +991,12 @@ 33.83 // Regular instance klass, fill in all local interfaces 33.84 for (int index = 0; index < size; index++) { 33.85 Klass* k = InstanceKlass::cast(klass())->local_interfaces()->at(index); 33.86 - result->obj_at_put(index, Klass::cast(k)->java_mirror()); 33.87 + result->obj_at_put(index, k->java_mirror()); 33.88 } 33.89 } else { 33.90 // All arrays implement java.lang.Cloneable and java.io.Serializable 33.91 - result->obj_at_put(0, Klass::cast(SystemDictionary::Cloneable_klass())->java_mirror()); 33.92 - result->obj_at_put(1, Klass::cast(SystemDictionary::Serializable_klass())->java_mirror()); 33.93 + result->obj_at_put(0, SystemDictionary::Cloneable_klass()->java_mirror()); 33.94 + result->obj_at_put(1, SystemDictionary::Serializable_klass()->java_mirror()); 33.95 } 33.96 return (jobjectArray) JNIHandles::make_local(env, result()); 33.97 JVM_END 33.98 @@ -1008,7 +1008,7 @@ 33.99 return NULL; 33.100 } 33.101 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.102 - oop loader = Klass::cast(k)->class_loader(); 33.103 + oop loader = k->class_loader(); 33.104 return JNIHandles::make_local(env, loader); 33.105 JVM_END 33.106 33.107 @@ -1020,8 +1020,8 @@ 33.108 return JNI_FALSE; 33.109 } 33.110 Klass* k = java_lang_Class::as_Klass(mirror); 33.111 - jboolean result = Klass::cast(k)->is_interface(); 33.112 - assert(!result || Klass::cast(k)->oop_is_instance(), 33.113 + jboolean result = k->is_interface(); 33.114 + assert(!result || k->oop_is_instance(), 33.115 "all interfaces are instance types"); 33.116 // The compiler intrinsic for isInterface tests the 33.117 // Klass::_access_flags bits in the same way. 33.118 @@ -1039,7 +1039,7 @@ 33.119 33.120 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.121 objArrayOop signers = NULL; 33.122 - if (Klass::cast(k)->oop_is_instance()) { 33.123 + if (k->oop_is_instance()) { 33.124 signers = InstanceKlass::cast(k)->signers(); 33.125 } 33.126 33.127 @@ -1066,7 +1066,7 @@ 33.128 // Signers are only set once, ClassLoader.java, and thus shouldn't 33.129 // be called with an array. Only the bootstrap loader creates arrays. 33.130 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.131 - if (Klass::cast(k)->oop_is_instance()) { 33.132 + if (k->oop_is_instance()) { 33.133 InstanceKlass::cast(k)->set_signers(objArrayOop(JNIHandles::resolve(signers))); 33.134 } 33.135 } 33.136 @@ -1085,7 +1085,7 @@ 33.137 } 33.138 33.139 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 33.140 - return (jobject) JNIHandles::make_local(env, Klass::cast(k)->protection_domain()); 33.141 + return (jobject) JNIHandles::make_local(env, k->protection_domain()); 33.142 JVM_END 33.143 33.144 33.145 @@ -1101,7 +1101,7 @@ 33.146 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 33.147 33.148 // cls won't be an array, as this called only from ClassLoader.defineClass 33.149 - if (Klass::cast(k)->oop_is_instance()) { 33.150 + if (k->oop_is_instance()) { 33.151 oop pd = JNIHandles::resolve(protection_domain); 33.152 assert(pd == NULL || pd->is_oop(), "just checking"); 33.153 InstanceKlass::cast(k)->set_protection_domain(pd); 33.154 @@ -1124,7 +1124,7 @@ 33.155 Handle object (THREAD, JNIHandles::resolve(action)); 33.156 33.157 // get run() method 33.158 - Method* m_oop = Klass::cast(object->klass())->uncached_lookup_method( 33.159 + Method* m_oop = object->klass()->uncached_lookup_method( 33.160 vmSymbols::run_method_name(), 33.161 vmSymbols::void_object_signature()); 33.162 methodHandle m (THREAD, m_oop); 33.163 @@ -1267,7 +1267,7 @@ 33.164 JVM_QUICK_ENTRY(jboolean, JVM_IsArrayClass(JNIEnv *env, jclass cls)) 33.165 JVMWrapper("JVM_IsArrayClass"); 33.166 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.167 - return (k != NULL) && Klass::cast(k)->oop_is_array() ? true : false; 33.168 + return (k != NULL) && k->oop_is_array() ? true : false; 33.169 JVM_END 33.170 33.171 33.172 @@ -1293,7 +1293,7 @@ 33.173 return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC; 33.174 } 33.175 33.176 - Klass* k = Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls))); 33.177 + Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.178 debug_only(int computed_modifiers = k->compute_modifier_flags(CHECK_0)); 33.179 assert(k->modifier_flags() == computed_modifiers, "modifiers cache is OK"); 33.180 return k->modifier_flags(); 33.181 @@ -1308,7 +1308,7 @@ 33.182 // of an InstanceKlass 33.183 33.184 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) || 33.185 - ! Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) { 33.186 + ! java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_instance()) { 33.187 oop result = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_NULL); 33.188 return (jobjectArray)JNIHandles::make_local(env, result); 33.189 } 33.190 @@ -1372,7 +1372,7 @@ 33.191 { 33.192 // ofClass is a reference to a java_lang_Class object. 33.193 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) || 33.194 - ! Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) { 33.195 + ! java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_instance()) { 33.196 return NULL; 33.197 } 33.198 33.199 @@ -1382,7 +1382,7 @@ 33.200 )->compute_enclosing_class(&inner_is_member, CHECK_NULL); 33.201 if (outer_klass == NULL) return NULL; // already a top-level class 33.202 if (!inner_is_member) return NULL; // an anonymous class (inside a method) 33.203 - return (jclass) JNIHandles::make_local(env, Klass::cast(outer_klass)->java_mirror()); 33.204 + return (jclass) JNIHandles::make_local(env, outer_klass->java_mirror()); 33.205 } 33.206 JVM_END 33.207 33.208 @@ -1452,7 +1452,7 @@ 33.209 // Return null for arrays and primatives 33.210 if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) { 33.211 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 33.212 - if (Klass::cast(k)->oop_is_instance()) { 33.213 + if (k->oop_is_instance()) { 33.214 Symbol* sym = InstanceKlass::cast(k)->generic_signature(); 33.215 if (sym == NULL) return NULL; 33.216 Handle str = java_lang_String::create_from_symbol(sym, CHECK_NULL); 33.217 @@ -1470,7 +1470,7 @@ 33.218 // Return null for arrays and primitives 33.219 if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) { 33.220 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls)); 33.221 - if (Klass::cast(k)->oop_is_instance()) { 33.222 + if (k->oop_is_instance()) { 33.223 typeArrayOop a = Annotations::make_java_array(InstanceKlass::cast(k)->class_annotations(), CHECK_NULL); 33.224 return (jbyteArray) JNIHandles::make_local(env, a); 33.225 } 33.226 @@ -1583,7 +1583,7 @@ 33.227 33.228 // Exclude primitive types and array types 33.229 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) || 33.230 - Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) { 33.231 + java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_array()) { 33.232 // Return empty array 33.233 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), 0, CHECK_NULL); 33.234 return (jobjectArray) JNIHandles::make_local(env, res); 33.235 @@ -1646,7 +1646,7 @@ 33.236 33.237 // Exclude primitive types and array types 33.238 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) 33.239 - || Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) { 33.240 + || java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_array()) { 33.241 // Return empty array 33.242 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), 0, CHECK_NULL); 33.243 return (jobjectArray) JNIHandles::make_local(env, res); 33.244 @@ -1698,7 +1698,7 @@ 33.245 33.246 // Exclude primitive types and array types 33.247 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) 33.248 - || Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) { 33.249 + || java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_array()) { 33.250 // Return empty array 33.251 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Constructor_klass(), 0 , CHECK_NULL); 33.252 return (jobjectArray) JNIHandles::make_local(env, res); 33.253 @@ -1751,7 +1751,7 @@ 33.254 return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC; 33.255 } 33.256 33.257 - Klass* k = Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls))); 33.258 + Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.259 return k->access_flags().as_int() & JVM_ACC_WRITTEN_FLAGS; 33.260 } 33.261 JVM_END 33.262 @@ -1767,7 +1767,7 @@ 33.263 // Return null for primitives and arrays 33.264 if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) { 33.265 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.266 - if (Klass::cast(k)->oop_is_instance()) { 33.267 + if (k->oop_is_instance()) { 33.268 instanceKlassHandle k_h(THREAD, k); 33.269 Handle jcp = sun_reflect_ConstantPool::create(CHECK_NULL); 33.270 sun_reflect_ConstantPool::set_cp(jcp(), k_h->constants()); 33.271 @@ -2043,12 +2043,12 @@ 33.272 if (java_lang_Class::is_primitive(r)) return false; 33.273 33.274 Klass* k = java_lang_Class::as_Klass(r); 33.275 - assert(Klass::cast(k)->oop_is_instance(), "must be an instance klass"); 33.276 - if (! Klass::cast(k)->oop_is_instance()) return false; 33.277 + assert(k->oop_is_instance(), "must be an instance klass"); 33.278 + if (! k->oop_is_instance()) return false; 33.279 33.280 ResourceMark rm(THREAD); 33.281 - const char* name = Klass::cast(k)->name()->as_C_string(); 33.282 - bool system_class = Klass::cast(k)->class_loader() == NULL; 33.283 + const char* name = k->name()->as_C_string(); 33.284 + bool system_class = k->class_loader() == NULL; 33.285 return JavaAssertions::enabled(name, system_class); 33.286 33.287 JVM_END 33.288 @@ -2079,7 +2079,7 @@ 33.289 JVMWrapper("JVM_GetClassNameUTF"); 33.290 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.291 k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); 33.292 - return Klass::cast(k)->name()->as_utf8(); 33.293 + return k->name()->as_utf8(); 33.294 JVM_END 33.295 33.296 33.297 @@ -2089,7 +2089,7 @@ 33.298 k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); 33.299 // types will have length zero if this is not an InstanceKlass 33.300 // (length is determined by call to JVM_GetClassCPEntriesCount) 33.301 - if (Klass::cast(k)->oop_is_instance()) { 33.302 + if (k->oop_is_instance()) { 33.303 ConstantPool* cp = InstanceKlass::cast(k)->constants(); 33.304 for (int index = cp->length() - 1; index >= 0; index--) { 33.305 constantTag tag = cp->tag_at(index); 33.306 @@ -2103,7 +2103,7 @@ 33.307 JVMWrapper("JVM_GetClassCPEntriesCount"); 33.308 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.309 k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); 33.310 - if (!Klass::cast(k)->oop_is_instance()) 33.311 + if (!k->oop_is_instance()) 33.312 return 0; 33.313 return InstanceKlass::cast(k)->constants()->length(); 33.314 JVM_END 33.315 @@ -2113,7 +2113,7 @@ 33.316 JVMWrapper("JVM_GetClassFieldsCount"); 33.317 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.318 k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); 33.319 - if (!Klass::cast(k)->oop_is_instance()) 33.320 + if (!k->oop_is_instance()) 33.321 return 0; 33.322 return InstanceKlass::cast(k)->java_fields_count(); 33.323 JVM_END 33.324 @@ -2123,7 +2123,7 @@ 33.325 JVMWrapper("JVM_GetClassMethodsCount"); 33.326 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); 33.327 k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread); 33.328 - if (!Klass::cast(k)->oop_is_instance()) 33.329 + if (!k->oop_is_instance()) 33.330 return 0; 33.331 return InstanceKlass::cast(k)->methods()->length(); 33.332 JVM_END 33.333 @@ -3123,7 +3123,7 @@ 33.334 // Fill in mirrors corresponding to method holders 33.335 int index = 0; 33.336 while (first != NULL) { 33.337 - result->obj_at_put(index++, Klass::cast(first->klass())->java_mirror()); 33.338 + result->obj_at_put(index++, first->klass()->java_mirror()); 33.339 first = first->next; 33.340 } 33.341 assert(index == depth, "just checking"); 33.342 @@ -3217,7 +3217,7 @@ 33.343 33.344 if (access.is_protected()) { 33.345 // See if current_class is a subclass of field_class 33.346 - if (Klass::cast(current_class)->is_subclass_of(field_class)) { 33.347 + if (current_class->is_subclass_of(field_class)) { 33.348 return true; 33.349 } 33.350 } 33.351 @@ -3241,8 +3241,8 @@ 33.352 } 33.353 33.354 // Arrays not allowed here, must use JVM_AllocateNewArray 33.355 - if (Klass::cast(java_lang_Class::as_Klass(curr_mirror))->oop_is_array() || 33.356 - Klass::cast(java_lang_Class::as_Klass(init_mirror))->oop_is_array()) { 33.357 + if (java_lang_Class::as_Klass(curr_mirror)->oop_is_array() || 33.358 + java_lang_Class::as_Klass(init_mirror)->oop_is_array()) { 33.359 ResourceMark rm(THREAD); 33.360 THROW_0(vmSymbols::java_lang_InvalidClassException()); 33.361 } 33.362 @@ -3264,7 +3264,7 @@ 33.363 if (m.is_null()) { 33.364 ResourceMark rm(THREAD); 33.365 THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), 33.366 - Method::name_and_sig_as_C_string(Klass::cast(init_klass()), 33.367 + Method::name_and_sig_as_C_string(init_klass(), 33.368 vmSymbols::object_initializer_name(), 33.369 vmSymbols::void_method_signature())); 33.370 } 33.371 @@ -4245,7 +4245,7 @@ 33.372 return NULL; 33.373 } 33.374 Klass* k = java_lang_Class::as_Klass(mirror()); 33.375 - if (!Klass::cast(k)->oop_is_instance()) { 33.376 + if (!k->oop_is_instance()) { 33.377 return NULL; 33.378 } 33.379 instanceKlassHandle ik_h(THREAD, k); 33.380 @@ -4256,7 +4256,7 @@ 33.381 objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::Object_klass(), 3, CHECK_NULL); 33.382 objArrayHandle dest(THREAD, dest_o); 33.383 Klass* enc_k = ik_h->constants()->klass_at(encl_method_class_idx, CHECK_NULL); 33.384 - dest->obj_at_put(0, Klass::cast(enc_k)->java_mirror()); 33.385 + dest->obj_at_put(0, enc_k->java_mirror()); 33.386 int encl_method_method_idx = ik_h->enclosing_method_method_index(); 33.387 if (encl_method_method_idx != 0) { 33.388 Symbol* sym = ik_h->constants()->symbol_at(
34.1 --- a/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Fri Nov 16 09:59:08 2012 +0100 34.2 +++ b/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Fri Nov 16 09:19:12 2012 -0500 34.3 @@ -228,7 +228,7 @@ 34.4 34.5 write_attribute_name_index("Code"); 34.6 write_u4(size); 34.7 - write_u2(method->max_stack()); 34.8 + write_u2(method->verifier_max_stack()); 34.9 write_u2(method->max_locals()); 34.10 write_u4(code_size); 34.11 copy_bytecodes(method, (unsigned char*)writeable_address(code_size));
35.1 --- a/src/share/vm/prims/jvmtiEnv.cpp Fri Nov 16 09:59:08 2012 +0100 35.2 +++ b/src/share/vm/prims/jvmtiEnv.cpp Fri Nov 16 09:19:12 2012 -0500 35.3 @@ -2116,7 +2116,7 @@ 35.4 result[0] = tchar; 35.5 result[1] = '\0'; 35.6 } else { 35.7 - const char* class_sig = Klass::cast(k)->signature_name(); 35.8 + const char* class_sig = k->signature_name(); 35.9 result = (char *) jvmtiMalloc(strlen(class_sig)+1); 35.10 strcpy(result, class_sig); 35.11 } 35.12 @@ -2124,7 +2124,7 @@ 35.13 } 35.14 if (generic_ptr != NULL) { 35.15 *generic_ptr = NULL; 35.16 - if (!isPrimitive && Klass::cast(k)->oop_is_instance()) { 35.17 + if (!isPrimitive && k->oop_is_instance()) { 35.18 Symbol* soo = InstanceKlass::cast(k)->generic_signature(); 35.19 if (soo != NULL) { 35.20 const char *gen_sig = soo->as_C_string(); 35.21 @@ -2155,7 +2155,7 @@ 35.22 } else { 35.23 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.24 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.25 - result = Klass::cast(k)->jvmti_class_status(); 35.26 + result = k->jvmti_class_status(); 35.27 } 35.28 *status_ptr = result; 35.29 35.30 @@ -2173,7 +2173,7 @@ 35.31 Klass* k_klass = java_lang_Class::as_Klass(k_mirror); 35.32 NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS); 35.33 35.34 - if (!Klass::cast(k_klass)->oop_is_instance()) { 35.35 + if (!k_klass->oop_is_instance()) { 35.36 return JVMTI_ERROR_ABSENT_INFORMATION; 35.37 } 35.38 35.39 @@ -2200,7 +2200,7 @@ 35.40 if (!java_lang_Class::is_primitive(k_mirror)) { 35.41 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.42 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.43 - result = Klass::cast(k)->compute_modifier_flags(current_thread); 35.44 + result = k->compute_modifier_flags(current_thread); 35.45 JavaThread* THREAD = current_thread; // pass to macros 35.46 if (HAS_PENDING_EXCEPTION) { 35.47 CLEAR_PENDING_EXCEPTION; 35.48 @@ -2208,7 +2208,7 @@ 35.49 }; 35.50 35.51 // Reset the deleted ACC_SUPER bit ( deleted in compute_modifier_flags()). 35.52 - if(Klass::cast(k)->is_super()) { 35.53 + if(k->is_super()) { 35.54 result |= JVM_ACC_SUPER; 35.55 } 35.56 } else { 35.57 @@ -2237,11 +2237,11 @@ 35.58 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.59 35.60 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 35.61 - if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 35.62 + if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 35.63 return JVMTI_ERROR_CLASS_NOT_PREPARED; 35.64 } 35.65 35.66 - if (!Klass::cast(k)->oop_is_instance()) { 35.67 + if (!k->oop_is_instance()) { 35.68 *method_count_ptr = 0; 35.69 *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID)); 35.70 return JVMTI_ERROR_NONE; 35.71 @@ -2293,11 +2293,11 @@ 35.72 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.73 35.74 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 35.75 - if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 35.76 + if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 35.77 return JVMTI_ERROR_CLASS_NOT_PREPARED; 35.78 } 35.79 35.80 - if (!Klass::cast(k)->oop_is_instance()) { 35.81 + if (!k->oop_is_instance()) { 35.82 *field_count_ptr = 0; 35.83 *fields_ptr = (jfieldID*) jvmtiMalloc(0 * sizeof(jfieldID)); 35.84 return JVMTI_ERROR_NONE; 35.85 @@ -2348,10 +2348,10 @@ 35.86 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.87 35.88 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 35.89 - if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) 35.90 + if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) 35.91 return JVMTI_ERROR_CLASS_NOT_PREPARED; 35.92 35.93 - if (!Klass::cast(k)->oop_is_instance()) { 35.94 + if (!k->oop_is_instance()) { 35.95 *interface_count_ptr = 0; 35.96 *interfaces_ptr = (jclass*) jvmtiMalloc(0 * sizeof(jclass)); 35.97 return JVMTI_ERROR_NONE; 35.98 @@ -2363,8 +2363,8 @@ 35.99 for (int i_index = 0; i_index < result_length; i_index += 1) { 35.100 Klass* klass_at = interface_list->at(i_index); 35.101 assert(klass_at->is_klass(), "interfaces must be Klass*s"); 35.102 - assert(Klass::cast(klass_at)->is_interface(), "interfaces must be interfaces"); 35.103 - oop mirror_at = Klass::cast(klass_at)->java_mirror(); 35.104 + assert(klass_at->is_interface(), "interfaces must be interfaces"); 35.105 + oop mirror_at = klass_at->java_mirror(); 35.106 Handle handle_at = Handle(current_thread, mirror_at); 35.107 result_list[i_index] = (jclass) jni_reference(handle_at); 35.108 } 35.109 @@ -2468,7 +2468,7 @@ 35.110 bool result = false; 35.111 if (!java_lang_Class::is_primitive(k_mirror)) { 35.112 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.113 - if (k != NULL && Klass::cast(k)->is_interface()) { 35.114 + if (k != NULL && k->is_interface()) { 35.115 result = true; 35.116 } 35.117 } 35.118 @@ -2487,7 +2487,7 @@ 35.119 bool result = false; 35.120 if (!java_lang_Class::is_primitive(k_mirror)) { 35.121 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.122 - if (k != NULL && Klass::cast(k)->oop_is_array()) { 35.123 + if (k != NULL && k->oop_is_array()) { 35.124 result = true; 35.125 } 35.126 } 35.127 @@ -2512,7 +2512,7 @@ 35.128 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.129 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.130 35.131 - oop result_oop = Klass::cast(k)->class_loader(); 35.132 + oop result_oop = k->class_loader(); 35.133 if (result_oop == NULL) { 35.134 *classloader_ptr = (jclass) jni_reference(Handle()); 35.135 return JVMTI_ERROR_NONE; 35.136 @@ -2535,7 +2535,7 @@ 35.137 } 35.138 Klass* k = java_lang_Class::as_Klass(k_mirror); 35.139 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 35.140 - if (!Klass::cast(k)->oop_is_instance()) { 35.141 + if (!k->oop_is_instance()) { 35.142 return JVMTI_ERROR_ABSENT_INFORMATION; 35.143 } 35.144 char* sde = InstanceKlass::cast(k)->source_debug_extension();
36.1 --- a/src/share/vm/prims/jvmtiEnvBase.cpp Fri Nov 16 09:59:08 2012 +0100 36.2 +++ b/src/share/vm/prims/jvmtiEnvBase.cpp Fri Nov 16 09:19:12 2012 -0500 36.3 @@ -590,7 +590,7 @@ 36.4 jclass 36.5 JvmtiEnvBase::get_jni_class_non_null(Klass* k) { 36.6 assert(k != NULL, "k != NULL"); 36.7 - return (jclass)jni_reference(Klass::cast(k)->java_mirror()); 36.8 + return (jclass)jni_reference(k->java_mirror()); 36.9 } 36.10 36.11 #ifndef JVMTI_KERNEL 36.12 @@ -1365,7 +1365,7 @@ 36.13 // Method return type signature. 36.14 char* ty_sign = 1 + strchr(signature->as_C_string(), ')'); 36.15 36.16 - if (!VM_GetOrSetLocal::is_assignable(ty_sign, Klass::cast(ob_kh()), current_thread)) { 36.17 + if (!VM_GetOrSetLocal::is_assignable(ty_sign, ob_kh(), current_thread)) { 36.18 return JVMTI_ERROR_TYPE_MISMATCH; 36.19 } 36.20 *ret_ob_h = ob_h;
37.1 --- a/src/share/vm/prims/jvmtiExport.cpp Fri Nov 16 09:59:08 2012 +0100 37.2 +++ b/src/share/vm/prims/jvmtiExport.cpp Fri Nov 16 09:19:12 2012 -0500 37.3 @@ -196,7 +196,7 @@ 37.4 jobject to_jobject(oop obj) { return JNIHandles::make_local(_thread,obj); } 37.5 #endif 37.6 37.7 - jclass to_jclass(Klass* klass) { return (klass == NULL ? NULL : (jclass)to_jobject(Klass::cast(klass)->java_mirror())); } 37.8 + jclass to_jclass(Klass* klass) { return (klass == NULL ? NULL : (jclass)to_jobject(klass->java_mirror())); } 37.9 37.10 jmethodID to_jmethodID(methodHandle method) { return method->jmethod_id(); } 37.11 37.12 @@ -920,7 +920,7 @@ 37.13 if (ets->is_enabled(JVMTI_EVENT_CLASS_LOAD)) { 37.14 EVT_TRACE(JVMTI_EVENT_CLASS_LOAD, ("JVMTI [%s] Evt Class Load sent %s", 37.15 JvmtiTrace::safe_get_thread_name(thread), 37.16 - kh()==NULL? "NULL" : Klass::cast(kh())->external_name() )); 37.17 + kh()==NULL? "NULL" : kh()->external_name() )); 37.18 37.19 JvmtiEnv *env = ets->get_env(); 37.20 JvmtiClassEventMark jem(thread, kh()); 37.21 @@ -949,7 +949,7 @@ 37.22 if (ets->is_enabled(JVMTI_EVENT_CLASS_PREPARE)) { 37.23 EVT_TRACE(JVMTI_EVENT_CLASS_PREPARE, ("JVMTI [%s] Evt Class Prepare sent %s", 37.24 JvmtiTrace::safe_get_thread_name(thread), 37.25 - kh()==NULL? "NULL" : Klass::cast(kh())->external_name() )); 37.26 + kh()==NULL? "NULL" : kh()->external_name() )); 37.27 37.28 JvmtiEnv *env = ets->get_env(); 37.29 JvmtiClassEventMark jem(thread, kh()); 37.30 @@ -979,12 +979,12 @@ 37.31 for (JvmtiEnv* env = it.first(); env != NULL; env = it.next(env)) { 37.32 if (env->is_enabled((jvmtiEvent)EXT_EVENT_CLASS_UNLOAD)) { 37.33 EVT_TRACE(EXT_EVENT_CLASS_UNLOAD, ("JVMTI [?] Evt Class Unload sent %s", 37.34 - kh()==NULL? "NULL" : Klass::cast(kh())->external_name() )); 37.35 + kh()==NULL? "NULL" : kh()->external_name() )); 37.36 37.37 // do everything manually, since this is a proxy - needs special care 37.38 JNIEnv* jni_env = real_thread->jni_environment(); 37.39 jthread jt = (jthread)JNIHandles::make_local(real_thread, real_thread->threadObj()); 37.40 - jclass jk = (jclass)JNIHandles::make_local(real_thread, Klass::cast(kh())->java_mirror()); 37.41 + jclass jk = (jclass)JNIHandles::make_local(real_thread, kh()->java_mirror()); 37.42 37.43 // Before we call the JVMTI agent, we have to set the state in the 37.44 // thread for which we are proxying. 37.45 @@ -2121,7 +2121,7 @@ 37.46 if (env->is_enabled(JVMTI_EVENT_VM_OBJECT_ALLOC)) { 37.47 EVT_TRACE(JVMTI_EVENT_VM_OBJECT_ALLOC, ("JVMTI [%s] Evt vmobject alloc sent %s", 37.48 JvmtiTrace::safe_get_thread_name(thread), 37.49 - object==NULL? "NULL" : Klass::cast(java_lang_Class::as_Klass(object))->external_name())); 37.50 + object==NULL? "NULL" : java_lang_Class::as_Klass(object)->external_name())); 37.51 37.52 JvmtiVMObjectAllocEventMark jem(thread, h()); 37.53 JvmtiJavaThreadEventTransition jet(thread);
38.1 --- a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Fri Nov 16 09:59:08 2012 +0100 38.2 +++ b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp Fri Nov 16 09:19:12 2012 -0500 38.3 @@ -169,7 +169,7 @@ 38.4 static void increment(Klass* k) { 38.5 JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this(); 38.6 if (that->get_initiatingLoader() == NULL) { 38.7 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.8 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.9 that->set_count(that->get_count() + 1); 38.10 } 38.11 } else if (k != NULL) { 38.12 @@ -182,7 +182,7 @@ 38.13 JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this(); 38.14 oop class_loader = loader_data->class_loader(); 38.15 if (class_loader == JNIHandles::resolve(that->get_initiatingLoader())) { 38.16 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.17 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.18 that->set_count(that->get_count() + 1); 38.19 } 38.20 } 38.21 @@ -200,14 +200,14 @@ 38.22 JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this(); 38.23 if (that->available()) { 38.24 if (that->get_initiatingLoader() == NULL) { 38.25 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.26 - oop mirror = Klass::cast(l)->java_mirror(); 38.27 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.28 + oop mirror = l->java_mirror(); 38.29 that->set_element(that->get_index(), mirror); 38.30 that->set_index(that->get_index() + 1); 38.31 } 38.32 } else if (k != NULL) { 38.33 // if initiating loader not null, just include the instance with 1 dimension 38.34 - oop mirror = Klass::cast(k)->java_mirror(); 38.35 + oop mirror = k->java_mirror(); 38.36 that->set_element(that->get_index(), mirror); 38.37 that->set_index(that->get_index() + 1); 38.38 } 38.39 @@ -219,8 +219,8 @@ 38.40 if (that->available()) { 38.41 oop class_loader = loader_data->class_loader(); 38.42 if (class_loader == JNIHandles::resolve(that->get_initiatingLoader())) { 38.43 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.44 - oop mirror = Klass::cast(l)->java_mirror(); 38.45 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.46 + oop mirror = l->java_mirror(); 38.47 that->set_element(that->get_index(), mirror); 38.48 that->set_index(that->get_index() + 1); 38.49 } 38.50 @@ -234,7 +234,7 @@ 38.51 static void increment_for_basic_type_arrays(Klass* k) { 38.52 JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this(); 38.53 assert(that != NULL, "no JvmtiGetLoadedClassesClosure"); 38.54 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.55 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.56 that->set_count(that->get_count() + 1); 38.57 } 38.58 } 38.59 @@ -244,8 +244,8 @@ 38.60 JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this(); 38.61 assert(that != NULL, "no JvmtiGetLoadedClassesClosure"); 38.62 assert(that->available(), "no list"); 38.63 - for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 38.64 - oop mirror = Klass::cast(l)->java_mirror(); 38.65 + for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 38.66 + oop mirror = l->java_mirror(); 38.67 that->set_element(that->get_index(), mirror); 38.68 that->set_index(that->get_index() + 1); 38.69 }
39.1 --- a/src/share/vm/prims/jvmtiImpl.cpp Fri Nov 16 09:59:08 2012 +0100 39.2 +++ b/src/share/vm/prims/jvmtiImpl.cpp Fri Nov 16 09:19:12 2012 -0500 39.3 @@ -641,14 +641,14 @@ 39.4 int super_depth = klass->super_depth(); 39.5 int idx; 39.6 for (idx = 0; idx < super_depth; idx++) { 39.7 - if (Klass::cast(klass->primary_super_of_depth(idx))->name() == ty_sym) { 39.8 + if (klass->primary_super_of_depth(idx)->name() == ty_sym) { 39.9 return true; 39.10 } 39.11 } 39.12 // Compare secondary supers 39.13 Array<Klass*>* sec_supers = klass->secondary_supers(); 39.14 for (idx = 0; idx < sec_supers->length(); idx++) { 39.15 - if (Klass::cast((Klass*) sec_supers->at(idx))->name() == ty_sym) { 39.16 + if (((Klass*) sec_supers->at(idx))->name() == ty_sym) { 39.17 return true; 39.18 } 39.19 } 39.20 @@ -726,7 +726,7 @@ 39.21 KlassHandle ob_kh = KlassHandle(cur_thread, obj->klass()); 39.22 NULL_CHECK(ob_kh, (_result = JVMTI_ERROR_INVALID_OBJECT, false)); 39.23 39.24 - if (!is_assignable(signature, Klass::cast(ob_kh()), cur_thread)) { 39.25 + if (!is_assignable(signature, ob_kh(), cur_thread)) { 39.26 _result = JVMTI_ERROR_TYPE_MISMATCH; 39.27 return false; 39.28 }
40.1 --- a/src/share/vm/prims/jvmtiRedefineClasses.cpp Fri Nov 16 09:59:08 2012 +0100 40.2 +++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp Fri Nov 16 09:19:12 2012 -0500 40.3 @@ -222,7 +222,7 @@ 40.4 } 40.5 Klass* the_class_oop = java_lang_Class::as_Klass(klass_mirror); 40.6 // classes for arrays cannot be redefined 40.7 - if (the_class_oop == NULL || !Klass::cast(the_class_oop)->oop_is_instance()) { 40.8 + if (the_class_oop == NULL || !the_class_oop->oop_is_instance()) { 40.9 return false; 40.10 } 40.11 return true; 40.12 @@ -573,8 +573,8 @@ 40.13 // Check for NULL superclass first since this might be java.lang.Object 40.14 if (the_class->super() != scratch_class->super() && 40.15 (the_class->super() == NULL || scratch_class->super() == NULL || 40.16 - Klass::cast(the_class->super())->name() != 40.17 - Klass::cast(scratch_class->super())->name())) { 40.18 + the_class->super()->name() != 40.19 + scratch_class->super()->name())) { 40.20 return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED; 40.21 } 40.22 40.23 @@ -592,8 +592,8 @@ 40.24 return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED; 40.25 } 40.26 for (i = 0; i < n_intfs; i++) { 40.27 - if (Klass::cast(k_interfaces->at(i))->name() != 40.28 - Klass::cast(k_new_interfaces->at(i))->name()) { 40.29 + if (k_interfaces->at(i)->name() != 40.30 + k_new_interfaces->at(i)->name()) { 40.31 return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED; 40.32 } 40.33 } 40.34 @@ -2684,7 +2684,7 @@ 40.35 // interface, then we have to call adjust_method_entries() for 40.36 // every InstanceKlass that has an itable since there isn't a 40.37 // subclass relationship between an interface and an InstanceKlass. 40.38 - if (ik->itable_length() > 0 && (Klass::cast(_the_class_oop)->is_interface() 40.39 + if (ik->itable_length() > 0 && (_the_class_oop->is_interface() 40.40 || ik->is_subclass_of(_the_class_oop))) { 40.41 // ik->itable() creates a wrapper object; rm cleans it up 40.42 ResourceMark rm(THREAD); 40.43 @@ -2929,7 +2929,7 @@ 40.44 Symbol* signature) { 40.45 TempNewSymbol name_symbol = SymbolTable::probe(name_str, (int)name_len); 40.46 if (name_symbol != NULL) { 40.47 - Method* method = Klass::cast(the_class())->lookup_method(name_symbol, signature); 40.48 + Method* method = the_class()->lookup_method(name_symbol, signature); 40.49 if (method != NULL) { 40.50 // Even if prefixed, intermediate methods must exist. 40.51 if (method->is_native()) {
41.1 --- a/src/share/vm/prims/jvmtiTagMap.cpp Fri Nov 16 09:59:08 2012 +0100 41.2 +++ b/src/share/vm/prims/jvmtiTagMap.cpp Fri Nov 16 09:19:12 2012 -0500 41.3 @@ -2774,7 +2774,7 @@ 41.4 // a type array references its class 41.5 inline bool VM_HeapWalkOperation::iterate_over_type_array(oop o) { 41.6 Klass* k = o->klass(); 41.7 - oop mirror = Klass::cast(k)->java_mirror(); 41.8 + oop mirror = k->java_mirror(); 41.9 if (!CallbackInvoker::report_class_reference(o, mirror)) { 41.10 return false; 41.11 } 41.12 @@ -2823,7 +2823,7 @@ 41.13 // super (only if something more interesting than java.lang.Object) 41.14 Klass* java_super = ik->java_super(); 41.15 if (java_super != NULL && java_super != SystemDictionary::Object_klass()) { 41.16 - oop super = Klass::cast(java_super)->java_mirror(); 41.17 + oop super = java_super->java_mirror(); 41.18 if (!CallbackInvoker::report_superclass_reference(mirror, super)) { 41.19 return false; 41.20 } 41.21 @@ -2865,7 +2865,7 @@ 41.22 // If the entry is non-null it is resolved. 41.23 if (entry == NULL) continue; 41.24 } else { 41.25 - entry = Klass::cast(pool->resolved_klass_at(i))->java_mirror(); 41.26 + entry = pool->resolved_klass_at(i)->java_mirror(); 41.27 } 41.28 if (!CallbackInvoker::report_constant_pool_reference(mirror, entry, (jint)i)) { 41.29 return false; 41.30 @@ -2879,7 +2879,7 @@ 41.31 // but are specified by IterateOverReachableObjects and must be reported). 41.32 Array<Klass*>* interfaces = ik->local_interfaces(); 41.33 for (i = 0; i < interfaces->length(); i++) { 41.34 - oop interf = Klass::cast((Klass*)interfaces->at(i))->java_mirror(); 41.35 + oop interf = ((Klass*)interfaces->at(i))->java_mirror(); 41.36 if (interf == NULL) { 41.37 continue; 41.38 } 41.39 @@ -2928,7 +2928,7 @@ 41.40 // references from the class). 41.41 inline bool VM_HeapWalkOperation::iterate_over_object(oop o) { 41.42 // reference to the class 41.43 - if (!CallbackInvoker::report_class_reference(o, Klass::cast(o->klass())->java_mirror())) { 41.44 + if (!CallbackInvoker::report_class_reference(o, o->klass()->java_mirror())) { 41.45 return false; 41.46 } 41.47
42.1 --- a/src/share/vm/prims/jvmtiTrace.cpp Fri Nov 16 09:59:08 2012 +0100 42.2 +++ b/src/share/vm/prims/jvmtiTrace.cpp Fri Nov 16 09:19:12 2012 -0500 42.3 @@ -292,7 +292,7 @@ 42.4 if (k_oop == NULL) { 42.5 return "INVALID"; 42.6 } 42.7 - return Klass::cast(k_oop)->external_name(); 42.8 + return k_oop->external_name(); 42.9 } 42.10 42.11 #endif /*JVMTI_TRACE */
43.1 --- a/src/share/vm/prims/methodHandles.cpp Fri Nov 16 09:59:08 2012 +0100 43.2 +++ b/src/share/vm/prims/methodHandles.cpp Fri Nov 16 09:19:12 2012 -0500 43.3 @@ -138,7 +138,7 @@ 43.4 oop clazz = java_lang_reflect_Method::clazz(target_oop); 43.5 int slot = java_lang_reflect_Method::slot(target_oop); 43.6 Klass* k = java_lang_Class::as_Klass(clazz); 43.7 - if (k != NULL && Klass::cast(k)->oop_is_instance()) { 43.8 + if (k != NULL && k->oop_is_instance()) { 43.9 Method* m = InstanceKlass::cast(k)->method_with_idnum(slot); 43.10 return init_method_MemberName(mname_oop, m, true, k); 43.11 } 43.12 @@ -146,7 +146,7 @@ 43.13 oop clazz = java_lang_reflect_Constructor::clazz(target_oop); 43.14 int slot = java_lang_reflect_Constructor::slot(target_oop); 43.15 Klass* k = java_lang_Class::as_Klass(clazz); 43.16 - if (k != NULL && Klass::cast(k)->oop_is_instance()) { 43.17 + if (k != NULL && k->oop_is_instance()) { 43.18 Method* m = InstanceKlass::cast(k)->method_with_idnum(slot); 43.19 return init_method_MemberName(mname_oop, m, false, k); 43.20 } 43.21 @@ -187,14 +187,14 @@ 43.22 } else if (mods.is_static()) { 43.23 flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT); 43.24 } else if (receiver_limit != mklass && 43.25 - !Klass::cast(receiver_limit)->is_subtype_of(mklass)) { 43.26 + !receiver_limit->is_subtype_of(mklass)) { 43.27 return NULL; // bad receiver limit 43.28 - } else if (Klass::cast(receiver_limit)->is_interface() && 43.29 - Klass::cast(mklass)->is_interface()) { 43.30 + } else if (receiver_limit->is_interface() && 43.31 + mklass->is_interface()) { 43.32 flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT); 43.33 receiver_limit = mklass; // ignore passed-in limit; interfaces are interconvertible 43.34 vmindex = klassItable::compute_itable_index(m); 43.35 - } else if (mklass != receiver_limit && Klass::cast(mklass)->is_interface()) { 43.36 + } else if (mklass != receiver_limit && mklass->is_interface()) { 43.37 flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT); 43.38 // it is a miranda method, so m->vtable_index is not what we want 43.39 ResourceMark rm; 43.40 @@ -210,7 +210,7 @@ 43.41 java_lang_invoke_MemberName::set_flags(mname_oop, flags); 43.42 java_lang_invoke_MemberName::set_vmtarget(mname_oop, m); 43.43 java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex); // vtable/itable index 43.44 - java_lang_invoke_MemberName::set_clazz(mname_oop, Klass::cast(receiver_limit)->java_mirror()); 43.45 + java_lang_invoke_MemberName::set_clazz(mname_oop, receiver_limit->java_mirror()); 43.46 // Note: name and type can be lazily computed by resolve_MemberName, 43.47 // if Java code needs them as resolved String and MethodType objects. 43.48 // The clazz must be eagerly stored, because it provides a GC 43.49 @@ -258,7 +258,7 @@ 43.50 java_lang_invoke_MemberName::set_flags(mname_oop, flags); 43.51 java_lang_invoke_MemberName::set_vmtarget(mname_oop, vmtarget); 43.52 java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex); 43.53 - java_lang_invoke_MemberName::set_clazz(mname_oop, Klass::cast(field_holder)->java_mirror()); 43.54 + java_lang_invoke_MemberName::set_clazz(mname_oop, field_holder->java_mirror()); 43.55 if (name != NULL) 43.56 java_lang_invoke_MemberName::set_name(mname_oop, name); 43.57 if (type != NULL) 43.58 @@ -299,7 +299,7 @@ 43.59 // The following test will fail spuriously during bootstrap of MethodHandle itself: 43.60 // if (klass != SystemDictionary::MethodHandle_klass()) 43.61 // Test the name instead: 43.62 - if (Klass::cast(klass)->name() != vmSymbols::java_lang_invoke_MethodHandle()) 43.63 + if (klass->name() != vmSymbols::java_lang_invoke_MethodHandle()) 43.64 return false; 43.65 Symbol* poly_sig = vmSymbols::object_array_object_signature(); 43.66 Method* m = InstanceKlass::cast(klass)->find_method(name, poly_sig); 43.67 @@ -363,7 +363,7 @@ 43.68 43.69 vmIntrinsics::ID MethodHandles::signature_polymorphic_name_id(Klass* klass, Symbol* name) { 43.70 if (klass != NULL && 43.71 - Klass::cast(klass)->name() == vmSymbols::java_lang_invoke_MethodHandle()) { 43.72 + klass->name() == vmSymbols::java_lang_invoke_MethodHandle()) { 43.73 vmIntrinsics::ID iid = signature_polymorphic_name_id(name); 43.74 if (iid != vmIntrinsics::_none) 43.75 return iid; 43.76 @@ -539,7 +539,7 @@ 43.77 43.78 43.79 static oop object_java_mirror() { 43.80 - return Klass::cast(SystemDictionary::Object_klass())->java_mirror(); 43.81 + return SystemDictionary::Object_klass()->java_mirror(); 43.82 } 43.83 43.84 static oop field_name_or_null(Symbol* s) { 43.85 @@ -560,9 +560,9 @@ 43.86 if (s == vmSymbols::object_signature()) { 43.87 return object_java_mirror(); 43.88 } else if (s == vmSymbols::class_signature()) { 43.89 - return Klass::cast(SystemDictionary::Class_klass())->java_mirror(); 43.90 + return SystemDictionary::Class_klass()->java_mirror(); 43.91 } else if (s == vmSymbols::string_signature()) { 43.92 - return Klass::cast(SystemDictionary::String_klass())->java_mirror(); 43.93 + return SystemDictionary::String_klass()->java_mirror(); 43.94 } 43.95 } 43.96 return NULL; 43.97 @@ -603,8 +603,8 @@ 43.98 { 43.99 Klass* defc_klass = java_lang_Class::as_Klass(defc_oop()); 43.100 if (defc_klass == NULL) return empty; // a primitive; no resolution possible 43.101 - if (!Klass::cast(defc_klass)->oop_is_instance()) { 43.102 - if (!Klass::cast(defc_klass)->oop_is_array()) return empty; 43.103 + if (!defc_klass->oop_is_instance()) { 43.104 + if (!defc_klass->oop_is_array()) return empty; 43.105 defc_klass = SystemDictionary::Object_klass(); 43.106 } 43.107 defc = instanceKlassHandle(THREAD, defc_klass); 43.108 @@ -767,7 +767,7 @@ 43.109 { 43.110 // This is taken from LinkResolver::resolve_field, sans access checks. 43.111 assert(vmtarget->is_klass(), "field vmtarget is Klass*"); 43.112 - if (!Klass::cast((Klass*) vmtarget)->oop_is_instance()) break; 43.113 + if (!((Klass*) vmtarget)->oop_is_instance()) break; 43.114 instanceKlassHandle defc(THREAD, (Klass*) vmtarget); 43.115 DEBUG_ONLY(vmtarget = NULL); // safety 43.116 bool is_static = ((flags & JVM_ACC_STATIC) != 0); 43.117 @@ -805,7 +805,7 @@ 43.118 43.119 // %%% take caller into account! 43.120 43.121 - if (k == NULL || !Klass::cast(k)->oop_is_instance()) return -1; 43.122 + if (k == NULL || !k->oop_is_instance()) return -1; 43.123 43.124 int rfill = 0, rlimit = results->length(), rskip = skip; 43.125 // overflow measurement: 43.126 @@ -1032,7 +1032,7 @@ 43.127 if (!Reflection::verify_class_access(caller, 43.128 reference_klass, 43.129 true)) { 43.130 - THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), Klass::cast(reference_klass)->external_name()); 43.131 + THROW_MSG_NULL(vmSymbols::java_lang_InternalError(), reference_klass->external_name()); 43.132 } 43.133 } 43.134 } 43.135 @@ -1108,7 +1108,7 @@ 43.136 if (vmtarget == NULL) { 43.137 x = NULL; 43.138 } else if (vmtarget->is_klass()) { 43.139 - x = Klass::cast((Klass*) vmtarget)->java_mirror(); 43.140 + x = ((Klass*) vmtarget)->java_mirror(); 43.141 } else if (vmtarget->is_method()) { 43.142 Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL); 43.143 x = MethodHandles::init_method_MemberName(mname2(), (Method*)vmtarget, false, NULL); 43.144 @@ -1237,7 +1237,7 @@ 43.145 if (SystemDictionary::MethodHandle_klass() == NULL) { 43.146 enable_MH = false; 43.147 } else { 43.148 - oop mirror = Klass::cast(SystemDictionary::MethodHandle_klass())->java_mirror(); 43.149 + oop mirror = SystemDictionary::MethodHandle_klass()->java_mirror(); 43.150 MH_class = (jclass) JNIHandles::make_local(env, mirror); 43.151 } 43.152
44.1 --- a/src/share/vm/prims/nativeLookup.cpp Fri Nov 16 09:59:08 2012 +0100 44.2 +++ b/src/share/vm/prims/nativeLookup.cpp Fri Nov 16 09:19:12 2012 -0500 44.3 @@ -349,7 +349,7 @@ 44.4 TempNewSymbol wrapper_symbol = SymbolTable::probe(wrapper_name, wrapper_name_len); 44.5 if (wrapper_symbol != NULL) { 44.6 KlassHandle kh(method->method_holder()); 44.7 - Method* wrapper_method = Klass::cast(kh())->lookup_method(wrapper_symbol, 44.8 + Method* wrapper_method = kh()->lookup_method(wrapper_symbol, 44.9 method->signature()); 44.10 if (wrapper_method != NULL && !wrapper_method->is_native()) { 44.11 // we found a wrapper method, use its native entry
45.1 --- a/src/share/vm/prims/unsafe.cpp Fri Nov 16 09:59:08 2012 +0100 45.2 +++ b/src/share/vm/prims/unsafe.cpp Fri Nov 16 09:19:12 2012 -0500 45.3 @@ -771,7 +771,7 @@ 45.4 oop mirror = JNIHandles::resolve_non_null(clazz); 45.5 45.6 Klass* klass = java_lang_Class::as_Klass(mirror); 45.7 - if (klass != NULL && Klass::cast(klass)->should_be_initialized()) { 45.8 + if (klass != NULL && klass->should_be_initialized()) { 45.9 InstanceKlass* k = InstanceKlass::cast(klass); 45.10 k->initialize(CHECK); 45.11 } 45.12 @@ -785,7 +785,7 @@ 45.13 } 45.14 oop mirror = JNIHandles::resolve_non_null(clazz); 45.15 Klass* klass = java_lang_Class::as_Klass(mirror); 45.16 - if (klass != NULL && Klass::cast(klass)->should_be_initialized()) { 45.17 + if (klass != NULL && klass->should_be_initialized()) { 45.18 return true; 45.19 } 45.20 return false;
46.1 --- a/src/share/vm/runtime/arguments.cpp Fri Nov 16 09:59:08 2012 +0100 46.2 +++ b/src/share/vm/runtime/arguments.cpp Fri Nov 16 09:19:12 2012 -0500 46.3 @@ -24,6 +24,7 @@ 46.4 46.5 #include "precompiled.hpp" 46.6 #include "classfile/javaAssertions.hpp" 46.7 +#include "classfile/symbolTable.hpp" 46.8 #include "compiler/compilerOracle.hpp" 46.9 #include "memory/allocation.inline.hpp" 46.10 #include "memory/cardTableRS.hpp" 46.11 @@ -1844,6 +1845,11 @@ 46.12 status = status && verify_percentage(MinHeapFreeRatio, "MinHeapFreeRatio"); 46.13 status = status && verify_percentage(MaxHeapFreeRatio, "MaxHeapFreeRatio"); 46.14 46.15 + // Divide by bucket size to prevent a large size from causing rollover when 46.16 + // calculating amount of memory needed to be allocated for the String table. 46.17 + status = status && verify_interval(StringTableSize, defaultStringTableSize, 46.18 + (max_uintx / StringTable::bucket_size()), "StringTable size"); 46.19 + 46.20 if (MinHeapFreeRatio > MaxHeapFreeRatio) { 46.21 jio_fprintf(defaultStream::error_stream(), 46.22 "MinHeapFreeRatio (" UINTX_FORMAT ") must be less than or "
47.1 --- a/src/share/vm/runtime/biasedLocking.cpp Fri Nov 16 09:59:08 2012 +0100 47.2 +++ b/src/share/vm/runtime/biasedLocking.cpp Fri Nov 16 09:19:12 2012 -0500 47.3 @@ -39,7 +39,7 @@ 47.4 static GrowableArray<markOop>* _preserved_mark_stack = NULL; 47.5 47.6 static void enable_biased_locking(Klass* k) { 47.7 - Klass::cast(k)->set_prototype_header(markOopDesc::biased_locking_prototype()); 47.8 + k->set_prototype_header(markOopDesc::biased_locking_prototype()); 47.9 } 47.10 47.11 class VM_EnableBiasedLocking: public VM_Operation { 47.12 @@ -149,7 +149,7 @@ 47.13 if (TraceBiasedLocking) { 47.14 ResourceMark rm; 47.15 tty->print_cr(" (Skipping revocation of object of type %s because it's no longer biased)", 47.16 - Klass::cast(obj->klass())->external_name()); 47.17 + obj->klass()->external_name()); 47.18 } 47.19 return BiasedLocking::NOT_BIASED; 47.20 } 47.21 @@ -161,7 +161,7 @@ 47.22 if (TraceBiasedLocking && (Verbose || !is_bulk)) { 47.23 ResourceMark rm; 47.24 tty->print_cr("Revoking bias of object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s , prototype header " INTPTR_FORMAT " , allow rebias %d , requesting thread " INTPTR_FORMAT, 47.25 - (intptr_t) obj, (intptr_t) mark, Klass::cast(obj->klass())->external_name(), (intptr_t) Klass::cast(obj->klass())->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread); 47.26 + (intptr_t) obj, (intptr_t) mark, obj->klass()->external_name(), (intptr_t) obj->klass()->prototype_header(), (allow_rebias ? 1 : 0), (intptr_t) requesting_thread); 47.27 } 47.28 47.29 JavaThread* biased_thread = mark->biased_locker(); 47.30 @@ -326,7 +326,7 @@ 47.31 tty->print_cr("* Beginning bulk revocation (kind == %s) because of object " 47.32 INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", 47.33 (bulk_rebias ? "rebias" : "revoke"), 47.34 - (intptr_t) o, (intptr_t) o->mark(), Klass::cast(o->klass())->external_name()); 47.35 + (intptr_t) o, (intptr_t) o->mark(), o->klass()->external_name()); 47.36 } 47.37 47.38 jlong cur_time = os::javaTimeMillis(); 47.39 @@ -334,7 +334,7 @@ 47.40 47.41 47.42 Klass* k_o = o->klass(); 47.43 - Klass* klass = Klass::cast(k_o); 47.44 + Klass* klass = k_o; 47.45 47.46 if (bulk_rebias) { 47.47 // Use the epoch in the klass of the object to implicitly revoke 47.48 @@ -546,7 +546,7 @@ 47.49 return BIAS_REVOKED; 47.50 } 47.51 } else if (mark->has_bias_pattern()) { 47.52 - Klass* k = Klass::cast(obj->klass()); 47.53 + Klass* k = obj->klass(); 47.54 markOop prototype_header = k->prototype_header(); 47.55 if (!prototype_header->has_bias_pattern()) { 47.56 // This object has a stale bias from before the bulk revocation 47.57 @@ -590,7 +590,7 @@ 47.58 if (heuristics == HR_NOT_BIASED) { 47.59 return NOT_BIASED; 47.60 } else if (heuristics == HR_SINGLE_REVOKE) { 47.61 - Klass *k = Klass::cast(obj->klass()); 47.62 + Klass *k = obj->klass(); 47.63 markOop prototype_header = k->prototype_header(); 47.64 if (mark->biased_locker() == THREAD && 47.65 prototype_header->bias_epoch() == mark->bias_epoch()) {
48.1 --- a/src/share/vm/runtime/globals.hpp Fri Nov 16 09:59:08 2012 +0100 48.2 +++ b/src/share/vm/runtime/globals.hpp Fri Nov 16 09:19:12 2012 -0500 48.3 @@ -3613,7 +3613,7 @@ 48.4 diagnostic(bool, PrintDTraceDOF, false, \ 48.5 "Print the DTrace DOF passed to the system for JSDT probes") \ 48.6 \ 48.7 - product(uintx, StringTableSize, 1009, \ 48.8 + product(uintx, StringTableSize, defaultStringTableSize, \ 48.9 "Number of buckets in the interned String table") \ 48.10 \ 48.11 develop(bool, TraceDefaultMethods, false, \
49.1 --- a/src/share/vm/runtime/os.cpp Fri Nov 16 09:59:08 2012 +0100 49.2 +++ b/src/share/vm/runtime/os.cpp Fri Nov 16 09:19:12 2012 -0500 49.3 @@ -582,7 +582,9 @@ 49.4 // if NULL is returned the calling functions assume out of memory. 49.5 size = 1; 49.6 } 49.7 - 49.8 + if (size > size + space_before + space_after) { // Check for rollover. 49.9 + return NULL; 49.10 + } 49.11 NOT_PRODUCT(if (MallocVerifyInterval > 0) check_heap()); 49.12 u_char* ptr = (u_char*)::malloc(size + space_before + space_after); 49.13
50.1 --- a/src/share/vm/runtime/reflection.cpp Fri Nov 16 09:59:08 2012 +0100 50.2 +++ b/src/share/vm/runtime/reflection.cpp Fri Nov 16 09:19:12 2012 -0500 50.3 @@ -70,8 +70,8 @@ 50.4 } 50.5 } 50.6 if (caller != NULL) { 50.7 - const char * from = Klass::cast(caller)->external_name(); 50.8 - const char * to = Klass::cast(to_class)->external_name(); 50.9 + const char * from = caller->external_name(); 50.10 + const char * to = to_class->external_name(); 50.11 // print in a single call to reduce interleaving between threads 50.12 if (source_file != NULL) { 50.13 tty->print("RESOLVE %s %s %s:%d (reflection)\n", from, to, source_file, line_number); 50.14 @@ -330,7 +330,7 @@ 50.15 return TypeArrayKlass::cast(tak)->allocate(length, THREAD); 50.16 } else { 50.17 Klass* k = java_lang_Class::as_Klass(element_mirror); 50.18 - if (Klass::cast(k)->oop_is_array() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) { 50.19 + if (k->oop_is_array() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) { 50.20 THROW_0(vmSymbols::java_lang_IllegalArgumentException()); 50.21 } 50.22 return oopFactory::new_objArray(k, length, THREAD); 50.23 @@ -366,7 +366,7 @@ 50.24 klass = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL); 50.25 } else { 50.26 klass = java_lang_Class::as_Klass(element_mirror); 50.27 - if (Klass::cast(klass)->oop_is_array()) { 50.28 + if (klass->oop_is_array()) { 50.29 int k_dim = ArrayKlass::cast(klass)->dimension(); 50.30 if (k_dim + len > MAX_DIM) { 50.31 THROW_0(vmSymbols::java_lang_IllegalArgumentException()); 50.32 @@ -374,7 +374,7 @@ 50.33 dim += k_dim; 50.34 } 50.35 } 50.36 - klass = Klass::cast(klass)->array_klass(dim, CHECK_NULL); 50.37 + klass = klass->array_klass(dim, CHECK_NULL); 50.38 oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, THREAD); 50.39 assert(obj->is_array(), "just checking"); 50.40 return arrayOop(obj); 50.41 @@ -387,7 +387,7 @@ 50.42 } 50.43 50.44 Klass* klass = java_lang_Class::as_Klass(mirror); 50.45 - if (!Klass::cast(klass)->oop_is_array()) { 50.46 + if (!klass->oop_is_array()) { 50.47 return NULL; 50.48 } 50.49 50.50 @@ -395,15 +395,15 @@ 50.51 #ifdef ASSERT 50.52 oop result2 = NULL; 50.53 if (ArrayKlass::cast(klass)->dimension() == 1) { 50.54 - if (Klass::cast(klass)->oop_is_typeArray()) { 50.55 + if (klass->oop_is_typeArray()) { 50.56 result2 = basic_type_arrayklass_to_mirror(klass, CHECK_NULL); 50.57 } else { 50.58 - result2 = Klass::cast(ObjArrayKlass::cast(klass)->element_klass())->java_mirror(); 50.59 + result2 = ObjArrayKlass::cast(klass)->element_klass()->java_mirror(); 50.60 } 50.61 } else { 50.62 Klass* lower_dim = ArrayKlass::cast(klass)->lower_dimension(); 50.63 - assert(Klass::cast(lower_dim)->oop_is_array(), "just checking"); 50.64 - result2 = Klass::cast(lower_dim)->java_mirror(); 50.65 + assert(lower_dim->oop_is_array(), "just checking"); 50.66 + result2 = lower_dim->java_mirror(); 50.67 } 50.68 assert(result == result2, "results must be consistent"); 50.69 #endif //ASSERT 50.70 @@ -442,7 +442,7 @@ 50.71 if (acc.is_protected()) { 50.72 if (target_class != client_class) { 50.73 if (!is_same_class_package(client_class, field_class)) { 50.74 - if (!Klass::cast(target_class)->is_subclass_of(client_class)) { 50.75 + if (!target_class->is_subclass_of(client_class)) { 50.76 THROW_(vmSymbols::java_lang_IllegalAccessException(), false); 50.77 } 50.78 } 50.79 @@ -468,7 +468,7 @@ 50.80 // sun/reflect/MagicAccessorImpl subclasses to succeed trivially. 50.81 if ( JDK_Version::is_gte_jdk14x_version() 50.82 && UseNewReflection 50.83 - && Klass::cast(current_class)->is_subclass_of(SystemDictionary::reflect_MagicAccessorImpl_klass())) { 50.84 + && current_class->is_subclass_of(SystemDictionary::reflect_MagicAccessorImpl_klass())) { 50.85 return true; 50.86 } 50.87 50.88 @@ -546,12 +546,12 @@ 50.89 if (access.is_protected()) { 50.90 if (!protected_restriction) { 50.91 // See if current_class is a subclass of field_class 50.92 - if (Klass::cast(current_class)->is_subclass_of(field_class)) { 50.93 + if (current_class->is_subclass_of(field_class)) { 50.94 if (access.is_static() || // static fields are ok, see 6622385 50.95 current_class == resolved_class || 50.96 field_class == resolved_class || 50.97 - Klass::cast(current_class)->is_subclass_of(resolved_class) || 50.98 - Klass::cast(resolved_class)->is_subclass_of(current_class)) { 50.99 + current_class->is_subclass_of(resolved_class) || 50.100 + resolved_class->is_subclass_of(current_class)) { 50.101 return true; 50.102 } 50.103 } 50.104 @@ -566,7 +566,7 @@ 50.105 // sun/reflect/MagicAccessorImpl subclasses to succeed trivially. 50.106 if ( JDK_Version::is_gte_jdk14x_version() 50.107 && UseNewReflection 50.108 - && Klass::cast(current_class)->is_subclass_of(SystemDictionary::reflect_MagicAccessorImpl_klass())) { 50.109 + && current_class->is_subclass_of(SystemDictionary::reflect_MagicAccessorImpl_klass())) { 50.110 return true; 50.111 } 50.112 50.113 @@ -693,7 +693,7 @@ 50.114 } 50.115 50.116 oop loader = InstanceKlass::cast(k())->class_loader(); 50.117 - oop protection_domain = Klass::cast(k())->protection_domain(); 50.118 + oop protection_domain = k()->protection_domain(); 50.119 Klass* result = SystemDictionary::resolve_or_fail(signature, 50.120 Handle(THREAD, loader), 50.121 Handle(THREAD, protection_domain), 50.122 @@ -703,7 +703,7 @@ 50.123 trace_class_resolution(result); 50.124 } 50.125 50.126 - oop nt = Klass::cast(result)->java_mirror(); 50.127 + oop nt = result->java_mirror(); 50.128 return Handle(THREAD, nt); 50.129 } 50.130 50.131 @@ -937,7 +937,7 @@ 50.132 ResourceMark rm(THREAD); 50.133 Handle h_origexception = Exceptions::new_exception(THREAD, 50.134 vmSymbols::java_lang_AbstractMethodError(), 50.135 - Method::name_and_sig_as_C_string(Klass::cast(target_klass()), 50.136 + Method::name_and_sig_as_C_string(target_klass(), 50.137 method->name(), 50.138 method->signature())); 50.139 JavaCallArguments args(h_origexception); 50.140 @@ -947,7 +947,7 @@ 50.141 } else { 50.142 ResourceMark rm(THREAD); 50.143 THROW_MSG_0(vmSymbols::java_lang_AbstractMethodError(), 50.144 - Method::name_and_sig_as_C_string(Klass::cast(target_klass()), 50.145 + Method::name_and_sig_as_C_string(target_klass(), 50.146 method->name(), 50.147 method->signature())); 50.148 } 50.149 @@ -962,7 +962,7 @@ 50.150 if (method.is_null()) { 50.151 ResourceMark rm(THREAD); 50.152 THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(), 50.153 - Method::name_and_sig_as_C_string(Klass::cast(klass()), 50.154 + Method::name_and_sig_as_C_string(klass(), 50.155 reflected_method->name(), 50.156 reflected_method->signature())); 50.157 }
51.1 --- a/src/share/vm/runtime/sharedRuntime.cpp Fri Nov 16 09:59:08 2012 +0100 51.2 +++ b/src/share/vm/runtime/sharedRuntime.cpp Fri Nov 16 09:19:12 2012 -0500 51.3 @@ -1775,7 +1775,7 @@ 51.4 // The copy_array mechanism is awkward and could be removed, but 51.5 // the compilers don't call this function except as a last resort, 51.6 // so it probably doesn't matter. 51.7 - Klass::cast(src->klass())->copy_array((arrayOopDesc*)src, src_pos, 51.8 + src->klass()->copy_array((arrayOopDesc*)src, src_pos, 51.9 (arrayOopDesc*)dest, dest_pos, 51.10 length, thread); 51.11 } 51.12 @@ -1788,8 +1788,8 @@ 51.13 vframeStream vfst(thread, true); 51.14 assert(!vfst.at_end(), "Java frame must exist"); 51.15 Bytecode_checkcast cc(vfst.method(), vfst.method()->bcp_from(vfst.bci())); 51.16 - Klass* targetKlass = Klass::cast(vfst.method()->constants()->klass_at( 51.17 - cc.index(), thread)); 51.18 + Klass* targetKlass = vfst.method()->constants()->klass_at( 51.19 + cc.index(), thread); 51.20 return generate_class_cast_message(objName, targetKlass->external_name()); 51.21 } 51.22
52.1 --- a/src/share/vm/runtime/signature.cpp Fri Nov 16 09:59:08 2012 +0100 52.2 +++ b/src/share/vm/runtime/signature.cpp Fri Nov 16 09:19:12 2012 -0500 52.3 @@ -354,7 +354,7 @@ 52.4 return Universe::java_mirror(type()); 52.5 Klass* klass = as_klass(class_loader, protection_domain, failure_mode, CHECK_NULL); 52.6 if (klass == NULL) return NULL; 52.7 - return Klass::cast(klass)->java_mirror(); 52.8 + return klass->java_mirror(); 52.9 } 52.10 52.11 Symbol* SignatureStream::as_symbol_or_null() {
53.1 --- a/src/share/vm/runtime/synchronizer.cpp Fri Nov 16 09:59:08 2012 +0100 53.2 +++ b/src/share/vm/runtime/synchronizer.cpp Fri Nov 16 09:19:12 2012 -0500 53.3 @@ -1323,7 +1323,7 @@ 53.4 ResourceMark rm; 53.5 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", 53.6 (intptr_t) object, (intptr_t) object->mark(), 53.7 - Klass::cast(object->klass())->external_name()); 53.8 + object->klass()->external_name()); 53.9 } 53.10 } 53.11 return m ; 53.12 @@ -1373,7 +1373,7 @@ 53.13 ResourceMark rm; 53.14 tty->print_cr("Inflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", 53.15 (intptr_t) object, (intptr_t) object->mark(), 53.16 - Klass::cast(object->klass())->external_name()); 53.17 + object->klass()->external_name()); 53.18 } 53.19 } 53.20 return m ; 53.21 @@ -1440,7 +1440,7 @@ 53.22 if (obj->is_instance()) { 53.23 ResourceMark rm; 53.24 tty->print_cr("Deflating object " INTPTR_FORMAT " , mark " INTPTR_FORMAT " , type %s", 53.25 - (intptr_t) obj, (intptr_t) obj->mark(), Klass::cast(obj->klass())->external_name()); 53.26 + (intptr_t) obj, (intptr_t) obj->mark(), obj->klass()->external_name()); 53.27 } 53.28 } 53.29
54.1 --- a/src/share/vm/runtime/thread.cpp Fri Nov 16 09:59:08 2012 +0100 54.2 +++ b/src/share/vm/runtime/thread.cpp Fri Nov 16 09:19:12 2012 -0500 54.3 @@ -1785,7 +1785,7 @@ 54.4 jio_fprintf(defaultStream::error_stream(), 54.5 "\nException: %s thrown from the UncaughtExceptionHandler" 54.6 " in thread \"%s\"\n", 54.7 - Klass::cast(pending_exception()->klass())->external_name(), 54.8 + pending_exception()->klass()->external_name(), 54.9 get_thread_name()); 54.10 CLEAR_PENDING_EXCEPTION; 54.11 }
55.1 --- a/src/share/vm/runtime/vframe.cpp Fri Nov 16 09:59:08 2012 +0100 55.2 +++ b/src/share/vm/runtime/vframe.cpp Fri Nov 16 09:19:12 2012 -0500 55.3 @@ -149,7 +149,7 @@ 55.4 Klass* target_klass = java_lang_Class::as_Klass(obj()); 55.5 st->print_cr("(a java.lang.Class for %s)", InstanceKlass::cast(target_klass)->external_name()); 55.6 } else { 55.7 - Klass* k = Klass::cast(obj->klass()); 55.8 + Klass* k = obj->klass(); 55.9 st->print_cr("(a %s)", k->external_name()); 55.10 } 55.11 } 55.12 @@ -172,7 +172,7 @@ 55.13 } 55.14 } else if (thread()->current_park_blocker() != NULL) { 55.15 oop obj = thread()->current_park_blocker(); 55.16 - Klass* k = Klass::cast(obj->klass()); 55.17 + Klass* k = obj->klass(); 55.18 st->print_cr("\t- %s <" INTPTR_FORMAT "> (a %s)", "parking to wait for ", (address)obj, k->external_name()); 55.19 } 55.20 } 55.21 @@ -550,7 +550,7 @@ 55.22 InstanceKlass* k = m->method_holder(); 55.23 tty->print_cr("frame( sp=" INTPTR_FORMAT ", unextended_sp=" INTPTR_FORMAT ", fp=" INTPTR_FORMAT ", pc=" INTPTR_FORMAT ")", 55.24 _fr.sp(), _fr.unextended_sp(), _fr.fp(), _fr.pc()); 55.25 - tty->print("%s.%s", Klass::cast(k)->internal_name(), m->name()->as_C_string()); 55.26 + tty->print("%s.%s", k->internal_name(), m->name()->as_C_string()); 55.27 55.28 if (!m->is_native()) { 55.29 Symbol* source_name = k->source_file_name();
56.1 --- a/src/share/vm/services/classLoadingService.hpp Fri Nov 16 09:59:08 2012 +0100 56.2 +++ b/src/share/vm/services/classLoadingService.hpp Fri Nov 16 09:19:12 2012 -0500 56.3 @@ -135,7 +135,7 @@ 56.4 // The spec is unclear at this point to count array klasses or not 56.5 // and also indirect creation of array of super class and secondaries 56.6 // 56.7 - // for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) { 56.8 + // for (Klass* l = k; l != NULL; l = l->array_klass_or_null()) { 56.9 // KlassHandle h(_current_thread, l); 56.10 // _loaded_classes->append(h); 56.11 // }
57.1 --- a/src/share/vm/services/heapDumper.cpp Fri Nov 16 09:59:08 2012 +0100 57.2 +++ b/src/share/vm/services/heapDumper.cpp Fri Nov 16 09:19:12 2012 -0500 57.3 @@ -879,7 +879,7 @@ 57.4 writer->write_u4(STACK_TRACE_ID); 57.5 57.6 // class ID 57.7 - writer->write_classID(Klass::cast(k)); 57.8 + writer->write_classID(k); 57.9 57.10 // number of bytes that follow 57.11 writer->write_u4(instance_size(k) ); 57.12 @@ -891,7 +891,7 @@ 57.13 // creates HPROF_GC_CLASS_DUMP record for the given class and each of 57.14 // its array classes 57.15 void DumperSupport::dump_class_and_array_classes(DumpWriter* writer, Klass* k) { 57.16 - Klass* klass = Klass::cast(k); 57.17 + Klass* klass = k; 57.18 assert(klass->oop_is_instance(), "not an InstanceKlass"); 57.19 InstanceKlass* ik = (InstanceKlass*)klass; 57.20 57.21 @@ -906,7 +906,7 @@ 57.22 if (java_super == NULL) { 57.23 writer->write_objectID(oop(NULL)); 57.24 } else { 57.25 - writer->write_classID(Klass::cast(java_super)); 57.26 + writer->write_classID(java_super); 57.27 } 57.28 57.29 writer->write_objectID(ik->class_loader()); 57.30 @@ -932,7 +932,7 @@ 57.31 // array classes 57.32 k = klass->array_klass_or_null(); 57.33 while (k != NULL) { 57.34 - Klass* klass = Klass::cast(k); 57.35 + Klass* klass = k; 57.36 assert(klass->oop_is_objArray(), "not an ObjArrayKlass"); 57.37 57.38 writer->write_u1(HPROF_GC_CLASS_DUMP); 57.39 @@ -942,7 +942,7 @@ 57.40 // super class of array classes is java.lang.Object 57.41 java_super = klass->java_super(); 57.42 assert(java_super != NULL, "checking"); 57.43 - writer->write_classID(Klass::cast(java_super)); 57.44 + writer->write_classID(java_super); 57.45 57.46 writer->write_objectID(ik->class_loader()); 57.47 writer->write_objectID(ik->signers()); 57.48 @@ -965,7 +965,7 @@ 57.49 void DumperSupport::dump_basic_type_array_class(DumpWriter* writer, Klass* k) { 57.50 // array classes 57.51 while (k != NULL) { 57.52 - Klass* klass = Klass::cast(k); 57.53 + Klass* klass = k; 57.54 57.55 writer->write_u1(HPROF_GC_CLASS_DUMP); 57.56 writer->write_classID(klass); 57.57 @@ -974,7 +974,7 @@ 57.58 // super class of array classes is java.lang.Object 57.59 Klass* java_super = klass->java_super(); 57.60 assert(java_super != NULL, "checking"); 57.61 - writer->write_classID(Klass::cast(java_super)); 57.62 + writer->write_classID(java_super); 57.63 57.64 writer->write_objectID(oop(NULL)); // loader 57.65 writer->write_objectID(oop(NULL)); // signers 57.66 @@ -1001,7 +1001,7 @@ 57.67 writer->write_u4((u4)array->length()); 57.68 57.69 // array class ID 57.70 - writer->write_classID(Klass::cast(array->klass())); 57.71 + writer->write_classID(array->klass()); 57.72 57.73 // [id]* elements 57.74 for (int index=0; index<array->length(); index++) { 57.75 @@ -1525,7 +1525,7 @@ 57.76 writer()->write_u4(++class_serial_num); 57.77 57.78 // class ID 57.79 - Klass* klass = Klass::cast(k); 57.80 + Klass* klass = k; 57.81 writer()->write_classID(klass); 57.82 57.83 // add the Klass* and class serial number pair 57.84 @@ -1796,7 +1796,7 @@ 57.85 // write fake frame that makes it look like the thread, which caused OOME, 57.86 // is in the OutOfMemoryError zero-parameter constructor 57.87 if (thread == _oome_thread && _oome_constructor != NULL) { 57.88 - int oome_serial_num = _klass_map->find(Klass::cast(_oome_constructor->method_holder())); 57.89 + int oome_serial_num = _klass_map->find(_oome_constructor->method_holder()); 57.90 // the class serial number starts from 1 57.91 assert(oome_serial_num > 0, "OutOfMemoryError class not found"); 57.92 DumperSupport::dump_stack_frame(writer(), ++frame_serial_num, oome_serial_num, 57.93 @@ -1806,7 +1806,7 @@ 57.94 for (int j=0; j < depth; j++) { 57.95 StackFrameInfo* frame = stack_trace->stack_frame_at(j); 57.96 Method* m = frame->method(); 57.97 - int class_serial_num = _klass_map->find(Klass::cast(m->method_holder())); 57.98 + int class_serial_num = _klass_map->find(m->method_holder()); 57.99 // the class serial number starts from 1 57.100 assert(class_serial_num > 0, "class not found"); 57.101 DumperSupport::dump_stack_frame(writer(), ++frame_serial_num, class_serial_num, m, frame->bci());
58.1 --- a/src/share/vm/services/management.cpp Fri Nov 16 09:59:08 2012 +0100 58.2 +++ b/src/share/vm/services/management.cpp Fri Nov 16 09:19:12 2012 -0500 58.3 @@ -1417,7 +1417,7 @@ 58.4 58.5 for (int i = 0; i < num_classes; i++) { 58.6 KlassHandle kh = lce.get_klass(i); 58.7 - oop mirror = Klass::cast(kh())->java_mirror(); 58.8 + oop mirror = kh()->java_mirror(); 58.9 classes_ah->obj_at_put(i, mirror); 58.10 } 58.11
59.1 --- a/src/share/vm/services/memBaseline.cpp Fri Nov 16 09:59:08 2012 +0100 59.2 +++ b/src/share/vm/services/memBaseline.cpp Fri Nov 16 09:19:12 2012 -0500 59.3 @@ -115,17 +115,25 @@ 59.4 while (malloc_ptr != NULL) { 59.5 index = flag2index(FLAGS_TO_MEMORY_TYPE(malloc_ptr->flags())); 59.6 size_t size = malloc_ptr->size(); 59.7 - _total_malloced += size; 59.8 - _malloc_data[index].inc(size); 59.9 - if (MemPointerRecord::is_arena_record(malloc_ptr->flags())) { 59.10 - // see if arena size record present 59.11 - MemPointerRecord* next_malloc_ptr = (MemPointerRecordEx*)malloc_itr.peek_next(); 59.12 - if (MemPointerRecord::is_arena_size_record(next_malloc_ptr->flags())) { 59.13 - assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr), "arena records do not match"); 59.14 - size = next_malloc_ptr->size(); 59.15 - _arena_data[index].inc(size); 59.16 - used_arena_size += size; 59.17 - malloc_itr.next(); 59.18 + if (malloc_ptr->is_arena_memory_record()) { 59.19 + // We do have anonymous arenas, they are either used as value objects, 59.20 + // which are embedded inside other objects, or used as stack objects. 59.21 + _arena_data[index].inc(size); 59.22 + used_arena_size += size; 59.23 + } else { 59.24 + _total_malloced += size; 59.25 + _malloc_data[index].inc(size); 59.26 + if (malloc_ptr->is_arena_record()) { 59.27 + // see if arena memory record present 59.28 + MemPointerRecord* next_malloc_ptr = (MemPointerRecordEx*)malloc_itr.peek_next(); 59.29 + if (next_malloc_ptr->is_arena_memory_record()) { 59.30 + assert(next_malloc_ptr->is_memory_record_of_arena(malloc_ptr), 59.31 + "Arena records do not match"); 59.32 + size = next_malloc_ptr->size(); 59.33 + _arena_data[index].inc(size); 59.34 + used_arena_size += size; 59.35 + malloc_itr.next(); 59.36 + } 59.37 } 59.38 } 59.39 malloc_ptr = (MemPointerRecordEx*)malloc_itr.next(); 59.40 @@ -193,7 +201,7 @@ 59.41 59.42 // baseline memory that is totaled over 1 KB 59.43 while (malloc_ptr != NULL) { 59.44 - if (!MemPointerRecord::is_arena_size_record(malloc_ptr->flags())) { 59.45 + if (!MemPointerRecord::is_arena_memory_record(malloc_ptr->flags())) { 59.46 // skip thread stacks 59.47 if (!IS_MEMORY_TYPE(malloc_ptr->flags(), mtThreadStack)) { 59.48 if (malloc_callsite.addr() != malloc_ptr->pc()) {
60.1 --- a/src/share/vm/services/memPtr.hpp Fri Nov 16 09:59:08 2012 +0100 60.2 +++ b/src/share/vm/services/memPtr.hpp Fri Nov 16 09:19:12 2012 -0500 60.3 @@ -165,7 +165,7 @@ 60.4 return (flags & (otArena | tag_size)) == otArena; 60.5 } 60.6 60.7 - inline static bool is_arena_size_record(MEMFLAGS flags) { 60.8 + inline static bool is_arena_memory_record(MEMFLAGS flags) { 60.9 return (flags & (otArena | tag_size)) == (otArena | tag_size); 60.10 } 60.11 60.12 @@ -256,8 +256,8 @@ 60.13 } 60.14 60.15 // if this record records a size information of an arena 60.16 - inline bool is_arena_size_record() const { 60.17 - return is_arena_size_record(_flags); 60.18 + inline bool is_arena_memory_record() const { 60.19 + return is_arena_memory_record(_flags); 60.20 } 60.21 60.22 // if this pointer represents an address to an arena object 60.23 @@ -266,8 +266,8 @@ 60.24 } 60.25 60.26 // if this record represents a size information of specific arena 60.27 - inline bool is_size_record_of_arena(const MemPointerRecord* arena_rc) { 60.28 - assert(is_arena_size_record(), "not size record"); 60.29 + inline bool is_memory_record_of_arena(const MemPointerRecord* arena_rc) { 60.30 + assert(is_arena_memory_record(), "not size record"); 60.31 assert(arena_rc->is_arena_record(), "not arena record"); 60.32 return (arena_rc->addr() + sizeof(void*)) == addr(); 60.33 }
61.1 --- a/src/share/vm/services/memSnapshot.cpp Fri Nov 16 09:59:08 2012 +0100 61.2 +++ b/src/share/vm/services/memSnapshot.cpp Fri Nov 16 09:19:12 2012 -0500 61.3 @@ -50,7 +50,7 @@ 61.4 tty->print_cr(" (tag)"); 61.5 } 61.6 } else { 61.7 - if (rec->is_arena_size_record()) { 61.8 + if (rec->is_arena_memory_record()) { 61.9 tty->print_cr(" (arena size)"); 61.10 } else if (rec->is_allocation_record()) { 61.11 tty->print_cr(" (malloc)"); 61.12 @@ -123,20 +123,31 @@ 61.13 // in different types. 61.14 bool VMMemPointerIterator::add_reserved_region(MemPointerRecord* rec) { 61.15 assert(rec->is_allocation_record(), "Sanity check"); 61.16 - VMMemRegion* cur = (VMMemRegion*)current(); 61.17 + VMMemRegion* reserved_region = (VMMemRegion*)current(); 61.18 61.19 // we don't have anything yet 61.20 - if (cur == NULL) { 61.21 + if (reserved_region == NULL) { 61.22 return insert_record(rec); 61.23 } 61.24 61.25 - assert(cur->is_reserved_region(), "Sanity check"); 61.26 + assert(reserved_region->is_reserved_region(), "Sanity check"); 61.27 // duplicated records 61.28 - if (cur->is_same_region(rec)) { 61.29 + if (reserved_region->is_same_region(rec)) { 61.30 return true; 61.31 } 61.32 - assert(cur->base() > rec->addr(), "Just check: locate()"); 61.33 - assert(!cur->overlaps_region(rec), "overlapping reserved regions"); 61.34 + // Overlapping stack regions indicate that a JNI thread failed to 61.35 + // detach from the VM before exiting. This leaks the JavaThread object. 61.36 + if (CheckJNICalls) { 61.37 + guarantee(FLAGS_TO_MEMORY_TYPE(reserved_region->flags()) != mtThreadStack || 61.38 + !reserved_region->overlaps_region(rec), 61.39 + "Attached JNI thread exited without being detached"); 61.40 + } 61.41 + // otherwise, we should not have overlapping reserved regions 61.42 + assert(FLAGS_TO_MEMORY_TYPE(reserved_region->flags()) == mtThreadStack || 61.43 + reserved_region->base() > rec->addr(), "Just check: locate()"); 61.44 + assert(FLAGS_TO_MEMORY_TYPE(reserved_region->flags()) == mtThreadStack || 61.45 + !reserved_region->overlaps_region(rec), "overlapping reserved regions"); 61.46 + 61.47 return insert_record(rec); 61.48 } 61.49 61.50 @@ -390,21 +401,31 @@ 61.51 } 61.52 } 61.53 61.54 -void MemSnapshot::copy_pointer(MemPointerRecord* dest, const MemPointerRecord* src) { 61.55 + 61.56 +void MemSnapshot::copy_seq_pointer(MemPointerRecord* dest, const MemPointerRecord* src) { 61.57 assert(dest != NULL && src != NULL, "Just check"); 61.58 assert(dest->addr() == src->addr(), "Just check"); 61.59 + assert(dest->seq() > 0 && src->seq() > 0, "not sequenced"); 61.60 61.61 - MEMFLAGS flags = dest->flags(); 61.62 + if (MemTracker::track_callsite()) { 61.63 + *(SeqMemPointerRecordEx*)dest = *(SeqMemPointerRecordEx*)src; 61.64 + } else { 61.65 + *(SeqMemPointerRecord*)dest = *(SeqMemPointerRecord*)src; 61.66 + } 61.67 +} 61.68 + 61.69 +void MemSnapshot::assign_pointer(MemPointerRecord*dest, const MemPointerRecord* src) { 61.70 + assert(src != NULL && dest != NULL, "Just check"); 61.71 + assert(dest->seq() == 0 && src->seq() >0, "cast away sequence"); 61.72 61.73 if (MemTracker::track_callsite()) { 61.74 *(MemPointerRecordEx*)dest = *(MemPointerRecordEx*)src; 61.75 } else { 61.76 - *dest = *src; 61.77 + *(MemPointerRecord*)dest = *(MemPointerRecord*)src; 61.78 } 61.79 } 61.80 61.81 - 61.82 -// merge a per-thread memory recorder to the staging area 61.83 +// merge a recorder to the staging area 61.84 bool MemSnapshot::merge(MemRecorder* rec) { 61.85 assert(rec != NULL && !rec->out_of_memory(), "Just check"); 61.86 61.87 @@ -412,71 +433,45 @@ 61.88 61.89 MutexLockerEx lock(_lock, true); 61.90 MemPointerIterator malloc_staging_itr(_staging_area.malloc_data()); 61.91 - MemPointerRecord *p1, *p2; 61.92 - p1 = (MemPointerRecord*) itr.current(); 61.93 - while (p1 != NULL) { 61.94 - if (p1->is_vm_pointer()) { 61.95 + MemPointerRecord* incoming_rec = (MemPointerRecord*) itr.current(); 61.96 + MemPointerRecord* matched_rec; 61.97 + 61.98 + while (incoming_rec != NULL) { 61.99 + if (incoming_rec->is_vm_pointer()) { 61.100 // we don't do anything with virtual memory records during merge 61.101 - if (!_staging_area.vm_data()->append(p1)) { 61.102 + if (!_staging_area.vm_data()->append(incoming_rec)) { 61.103 return false; 61.104 } 61.105 } else { 61.106 // locate matched record and/or also position the iterator to proper 61.107 // location for this incoming record. 61.108 - p2 = (MemPointerRecord*)malloc_staging_itr.locate(p1->addr()); 61.109 - // we have not seen this memory block, so just add to staging area 61.110 - if (p2 == NULL) { 61.111 - if (!malloc_staging_itr.insert(p1)) { 61.112 + matched_rec = (MemPointerRecord*)malloc_staging_itr.locate(incoming_rec->addr()); 61.113 + // we have not seen this memory block in this generation, 61.114 + // so just add to staging area 61.115 + if (matched_rec == NULL) { 61.116 + if (!malloc_staging_itr.insert(incoming_rec)) { 61.117 return false; 61.118 } 61.119 - } else if (p1->addr() == p2->addr()) { 61.120 - MemPointerRecord* staging_next = (MemPointerRecord*)malloc_staging_itr.peek_next(); 61.121 - // a memory block can have many tagging records, find right one to replace or 61.122 - // right position to insert 61.123 - while (staging_next != NULL && staging_next->addr() == p1->addr()) { 61.124 - if ((staging_next->flags() & MemPointerRecord::tag_masks) <= 61.125 - (p1->flags() & MemPointerRecord::tag_masks)) { 61.126 - p2 = (MemPointerRecord*)malloc_staging_itr.next(); 61.127 - staging_next = (MemPointerRecord*)malloc_staging_itr.peek_next(); 61.128 - } else { 61.129 - break; 61.130 - } 61.131 + } else if (incoming_rec->addr() == matched_rec->addr()) { 61.132 + // whoever has higher sequence number wins 61.133 + if (incoming_rec->seq() > matched_rec->seq()) { 61.134 + copy_seq_pointer(matched_rec, incoming_rec); 61.135 } 61.136 - int df = (p1->flags() & MemPointerRecord::tag_masks) - 61.137 - (p2->flags() & MemPointerRecord::tag_masks); 61.138 - if (df == 0) { 61.139 - assert(p1->seq() > 0, "not sequenced"); 61.140 - assert(p2->seq() > 0, "not sequenced"); 61.141 - if (p1->seq() > p2->seq()) { 61.142 - copy_pointer(p2, p1); 61.143 - } 61.144 - } else if (df < 0) { 61.145 - if (!malloc_staging_itr.insert(p1)) { 61.146 - return false; 61.147 - } 61.148 - } else { 61.149 - if (!malloc_staging_itr.insert_after(p1)) { 61.150 - return false; 61.151 - } 61.152 - } 61.153 - } else if (p1->addr() < p2->addr()) { 61.154 - if (!malloc_staging_itr.insert(p1)) { 61.155 + } else if (incoming_rec->addr() < matched_rec->addr()) { 61.156 + if (!malloc_staging_itr.insert(incoming_rec)) { 61.157 return false; 61.158 } 61.159 } else { 61.160 - if (!malloc_staging_itr.insert_after(p1)) { 61.161 - return false; 61.162 - } 61.163 + ShouldNotReachHere(); 61.164 } 61.165 } 61.166 - p1 = (MemPointerRecord*)itr.next(); 61.167 + incoming_rec = (MemPointerRecord*)itr.next(); 61.168 } 61.169 NOT_PRODUCT(void check_staging_data();) 61.170 return true; 61.171 } 61.172 61.173 61.174 - 61.175 // promote data to next generation 61.176 bool MemSnapshot::promote() { 61.177 assert(_alloc_ptrs != NULL && _vm_ptrs != NULL, "Just check"); 61.178 @@ -507,20 +502,25 @@ 61.179 // found matched memory block 61.180 if (matched_rec != NULL && new_rec->addr() == matched_rec->addr()) { 61.181 // snapshot already contains 'live' records 61.182 - assert(matched_rec->is_allocation_record() || matched_rec->is_arena_size_record(), 61.183 + assert(matched_rec->is_allocation_record() || matched_rec->is_arena_memory_record(), 61.184 "Sanity check"); 61.185 // update block states 61.186 - if (new_rec->is_allocation_record() || new_rec->is_arena_size_record()) { 61.187 - copy_pointer(matched_rec, new_rec); 61.188 + if (new_rec->is_allocation_record()) { 61.189 + assign_pointer(matched_rec, new_rec); 61.190 + } else if (new_rec->is_arena_memory_record()) { 61.191 + if (new_rec->size() == 0) { 61.192 + // remove size record once size drops to 0 61.193 + malloc_snapshot_itr.remove(); 61.194 + } else { 61.195 + assign_pointer(matched_rec, new_rec); 61.196 + } 61.197 } else { 61.198 // a deallocation record 61.199 assert(new_rec->is_deallocation_record(), "Sanity check"); 61.200 // an arena record can be followed by a size record, we need to remove both 61.201 if (matched_rec->is_arena_record()) { 61.202 MemPointerRecord* next = (MemPointerRecord*)malloc_snapshot_itr.peek_next(); 61.203 - if (next->is_arena_size_record()) { 61.204 - // it has to match the arena record 61.205 - assert(next->is_size_record_of_arena(matched_rec), "Sanity check"); 61.206 + if (next->is_arena_memory_record() && next->is_memory_record_of_arena(matched_rec)) { 61.207 malloc_snapshot_itr.remove(); 61.208 } 61.209 } 61.210 @@ -528,17 +528,13 @@ 61.211 malloc_snapshot_itr.remove(); 61.212 } 61.213 } else { 61.214 - // it is a new record, insert into snapshot 61.215 - if (new_rec->is_arena_size_record()) { 61.216 - MemPointerRecord* prev = (MemPointerRecord*)malloc_snapshot_itr.peek_prev(); 61.217 - if (prev == NULL || !prev->is_arena_record() || !new_rec->is_size_record_of_arena(prev)) { 61.218 - // no matched arena record, ignore the size record 61.219 - new_rec = NULL; 61.220 - } 61.221 + // don't insert size 0 record 61.222 + if (new_rec->is_arena_memory_record() && new_rec->size() == 0) { 61.223 + new_rec = NULL; 61.224 } 61.225 - // only 'live' record can go into snapshot 61.226 + 61.227 if (new_rec != NULL) { 61.228 - if (new_rec->is_allocation_record() || new_rec->is_arena_size_record()) { 61.229 + if (new_rec->is_allocation_record() || new_rec->is_arena_memory_record()) { 61.230 if (matched_rec != NULL && new_rec->addr() > matched_rec->addr()) { 61.231 if (!malloc_snapshot_itr.insert_after(new_rec)) { 61.232 return false;
62.1 --- a/src/share/vm/services/memSnapshot.hpp Fri Nov 16 09:59:08 2012 +0100 62.2 +++ b/src/share/vm/services/memSnapshot.hpp Fri Nov 16 09:19:12 2012 -0500 62.3 @@ -31,7 +31,6 @@ 62.4 #include "services/memBaseline.hpp" 62.5 #include "services/memPtrArray.hpp" 62.6 62.7 - 62.8 // Snapshot pointer array iterator 62.9 62.10 // The pointer array contains malloc-ed pointers 62.11 @@ -165,39 +164,58 @@ 62.12 }; 62.13 62.14 class MallocRecordIterator : public MemPointerArrayIterator { 62.15 - protected: 62.16 + private: 62.17 MemPointerArrayIteratorImpl _itr; 62.18 62.19 + 62.20 + 62.21 public: 62.22 MallocRecordIterator(MemPointerArray* arr) : _itr(arr) { 62.23 } 62.24 62.25 virtual MemPointer* current() const { 62.26 - MemPointerRecord* cur = (MemPointerRecord*)_itr.current(); 62.27 - assert(cur == NULL || !cur->is_vm_pointer(), "seek error"); 62.28 - MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next(); 62.29 - if (next == NULL || next->addr() != cur->addr()) { 62.30 - return cur; 62.31 - } else { 62.32 - assert(!cur->is_vm_pointer(), "Sanity check"); 62.33 - assert(cur->is_allocation_record() && next->is_deallocation_record(), 62.34 - "sorting order"); 62.35 - assert(cur->seq() != next->seq(), "Sanity check"); 62.36 - return cur->seq() > next->seq() ? cur : next; 62.37 +#ifdef ASSERT 62.38 + MemPointer* cur_rec = _itr.current(); 62.39 + if (cur_rec != NULL) { 62.40 + MemPointer* prev_rec = _itr.peek_prev(); 62.41 + MemPointer* next_rec = _itr.peek_next(); 62.42 + assert(prev_rec == NULL || prev_rec->addr() < cur_rec->addr(), "Sorting order"); 62.43 + assert(next_rec == NULL || next_rec->addr() > cur_rec->addr(), "Sorting order"); 62.44 } 62.45 +#endif 62.46 + return _itr.current(); 62.47 } 62.48 - 62.49 virtual MemPointer* next() { 62.50 - MemPointerRecord* cur = (MemPointerRecord*)_itr.current(); 62.51 - assert(cur == NULL || !cur->is_vm_pointer(), "Sanity check"); 62.52 - MemPointerRecord* next = (MemPointerRecord*)_itr.next(); 62.53 - if (next == NULL) { 62.54 - return NULL; 62.55 + MemPointerRecord* next_rec = (MemPointerRecord*)_itr.next(); 62.56 + // arena memory record is a special case, which we have to compare 62.57 + // sequence number against its associated arena record. 62.58 + if (next_rec != NULL && next_rec->is_arena_memory_record()) { 62.59 + MemPointerRecord* prev_rec = (MemPointerRecord*)_itr.peek_prev(); 62.60 + // if there is an associated arena record, it has to be previous 62.61 + // record because of sorting order (by address) - NMT generates a pseudo address 62.62 + // for arena's size record by offsetting arena's address, that guarantees 62.63 + // the order of arena record and it's size record. 62.64 + if (prev_rec != NULL && prev_rec->is_arena_record() && 62.65 + next_rec->is_memory_record_of_arena(prev_rec)) { 62.66 + if (prev_rec->seq() > next_rec->seq()) { 62.67 + // Skip this arena memory record 62.68 + // Two scenarios: 62.69 + // - if the arena record is an allocation record, this early 62.70 + // size record must be leftover by previous arena, 62.71 + // and the last size record should have size = 0. 62.72 + // - if the arena record is a deallocation record, this 62.73 + // size record should be its cleanup record, which should 62.74 + // also have size = 0. In other world, arena alway reset 62.75 + // its size before gone (see Arena's destructor) 62.76 + assert(next_rec->size() == 0, "size not reset"); 62.77 + return _itr.next(); 62.78 + } else { 62.79 + assert(prev_rec->is_allocation_record(), 62.80 + "Arena size record ahead of allocation record"); 62.81 + } 62.82 + } 62.83 } 62.84 - if (cur->addr() == next->addr()) { 62.85 - next = (MemPointerRecord*)_itr.next(); 62.86 - } 62.87 - return current(); 62.88 + return next_rec; 62.89 } 62.90 62.91 MemPointer* peek_next() const { ShouldNotReachHere(); return NULL; } 62.92 @@ -213,9 +231,12 @@ 62.93 // still chances seeing duplicated records during promotion. 62.94 // We want to use the record with higher sequence number, because it has 62.95 // more accurate callsite pc. 62.96 -class VMRecordIterator : public MallocRecordIterator { 62.97 +class VMRecordIterator : public MemPointerArrayIterator { 62.98 + private: 62.99 + MemPointerArrayIteratorImpl _itr; 62.100 + 62.101 public: 62.102 - VMRecordIterator(MemPointerArray* arr) : MallocRecordIterator(arr) { 62.103 + VMRecordIterator(MemPointerArray* arr) : _itr(arr) { 62.104 MemPointerRecord* cur = (MemPointerRecord*)_itr.current(); 62.105 MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next(); 62.106 while (next != NULL) { 62.107 @@ -256,6 +277,12 @@ 62.108 return cur; 62.109 } 62.110 62.111 + MemPointer* peek_next() const { ShouldNotReachHere(); return NULL; } 62.112 + MemPointer* peek_prev() const { ShouldNotReachHere(); return NULL; } 62.113 + void remove() { ShouldNotReachHere(); } 62.114 + bool insert(MemPointer* ptr) { ShouldNotReachHere(); return false; } 62.115 + bool insert_after(MemPointer* ptr) { ShouldNotReachHere(); return false; } 62.116 + 62.117 private: 62.118 bool is_duplicated_record(MemPointerRecord* p1, MemPointerRecord* p2) const { 62.119 bool ret = (p1->addr() == p2->addr() && p1->size() == p2->size() && p1->flags() == p2->flags()); 62.120 @@ -348,8 +375,10 @@ 62.121 DEBUG_ONLY( void dump_all_vm_pointers();) 62.122 62.123 private: 62.124 - // copy pointer data from src to dest 62.125 - void copy_pointer(MemPointerRecord* dest, const MemPointerRecord* src); 62.126 + // copy sequenced pointer from src to dest 62.127 + void copy_seq_pointer(MemPointerRecord* dest, const MemPointerRecord* src); 62.128 + // assign a sequenced pointer to non-sequenced pointer 62.129 + void assign_pointer(MemPointerRecord*dest, const MemPointerRecord* src); 62.130 62.131 bool promote_malloc_records(MemPointerArrayIterator* itr); 62.132 bool promote_virtual_memory_records(MemPointerArrayIterator* itr);
63.1 --- a/src/share/vm/services/memTracker.hpp Fri Nov 16 09:59:08 2012 +0100 63.2 +++ b/src/share/vm/services/memTracker.hpp Fri Nov 16 09:19:12 2012 -0500 63.3 @@ -284,14 +284,14 @@ 63.4 } 63.5 } 63.6 63.7 - // record arena size 63.8 + // record arena memory size 63.9 static inline void record_arena_size(address addr, size_t size) { 63.10 - // we add a positive offset to arena address, so we can have arena size record 63.11 + // we add a positive offset to arena address, so we can have arena memory record 63.12 // sorted after arena record 63.13 if (is_on() && !UseMallocOnly) { 63.14 assert(addr != NULL, "Sanity check"); 63.15 create_memory_record((addr + sizeof(void*)), MemPointerRecord::arena_size_tag(), size, 63.16 - 0, NULL); 63.17 + DEBUG_CALLER_PC, NULL); 63.18 } 63.19 } 63.20
64.1 --- a/src/share/vm/services/serviceUtil.hpp Fri Nov 16 09:59:08 2012 +0100 64.2 +++ b/src/share/vm/services/serviceUtil.hpp Fri Nov 16 09:19:12 2012 -0500 64.3 @@ -57,14 +57,13 @@ 64.4 if (k->is_klass()) { 64.5 // if it's a class for an object, an object array, or 64.6 // primitive (type) array then it's visible. 64.7 - Klass* klass = k; 64.8 - if (Klass::cast(klass)->oop_is_instance()) { 64.9 + if (k->oop_is_instance()) { 64.10 return true; 64.11 } 64.12 - if (Klass::cast(klass)->oop_is_objArray()) { 64.13 + if (k->oop_is_objArray()) { 64.14 return true; 64.15 } 64.16 - if (Klass::cast(klass)->oop_is_typeArray()) { 64.17 + if (k->oop_is_typeArray()) { 64.18 return true; 64.19 } 64.20 }
65.1 --- a/src/share/vm/utilities/globalDefinitions.hpp Fri Nov 16 09:59:08 2012 +0100 65.2 +++ b/src/share/vm/utilities/globalDefinitions.hpp Fri Nov 16 09:19:12 2012 -0500 65.3 @@ -328,6 +328,12 @@ 65.4 65.5 65.6 //---------------------------------------------------------------------------------------------------- 65.7 +// Minimum StringTableSize value 65.8 + 65.9 +const int defaultStringTableSize=1009; 65.10 + 65.11 + 65.12 +//---------------------------------------------------------------------------------------------------- 65.13 // HotSwap - for JVMTI aka Class File Replacement and PopFrame 65.14 // 65.15 // Determines whether on-the-fly class replacement and frame popping are enabled.