Mercurial > hg > truffle
comparison src/share/vm/classfile/verificationType.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 4ee06e614636 |
children | 2373a1f4987c |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
55 // We need check the class hierarchy to check assignability | 55 // We need check the class hierarchy to check assignability |
56 if (name() == vmSymbols::java_lang_Object()) { | 56 if (name() == vmSymbols::java_lang_Object()) { |
57 // any object or array is assignable to java.lang.Object | 57 // any object or array is assignable to java.lang.Object |
58 return true; | 58 return true; |
59 } | 59 } |
60 klassOop obj = SystemDictionary::resolve_or_fail( | 60 Klass* obj = SystemDictionary::resolve_or_fail( |
61 name(), Handle(THREAD, klass->class_loader()), | 61 name(), Handle(THREAD, klass->class_loader()), |
62 Handle(THREAD, klass->protection_domain()), true, CHECK_false); | 62 Handle(THREAD, klass->protection_domain()), true, CHECK_false); |
63 KlassHandle this_class(THREAD, obj); | 63 KlassHandle this_class(THREAD, obj); |
64 | 64 |
65 if (this_class->is_interface()) { | 65 if (this_class->is_interface()) { |
66 // We treat interfaces as java.lang.Object, including | 66 // We treat interfaces as java.lang.Object, including |
67 // java.lang.Cloneable and java.io.Serializable | 67 // java.lang.Cloneable and java.io.Serializable |
68 return true; | 68 return true; |
69 } else if (from.is_object()) { | 69 } else if (from.is_object()) { |
70 klassOop from_class = SystemDictionary::resolve_or_fail( | 70 Klass* from_class = SystemDictionary::resolve_or_fail( |
71 from.name(), Handle(THREAD, klass->class_loader()), | 71 from.name(), Handle(THREAD, klass->class_loader()), |
72 Handle(THREAD, klass->protection_domain()), true, CHECK_false); | 72 Handle(THREAD, klass->protection_domain()), true, CHECK_false); |
73 return instanceKlass::cast(from_class)->is_subclass_of(this_class()); | 73 return InstanceKlass::cast(from_class)->is_subclass_of(this_class()); |
74 } | 74 } |
75 } else if (is_array() && from.is_array()) { | 75 } else if (is_array() && from.is_array()) { |
76 VerificationType comp_this = get_component(context, CHECK_false); | 76 VerificationType comp_this = get_component(context, CHECK_false); |
77 VerificationType comp_from = from.get_component(context, CHECK_false); | 77 VerificationType comp_from = from.get_component(context, CHECK_false); |
78 if (!comp_this.is_bogus() && !comp_from.is_bogus()) { | 78 if (!comp_this.is_bogus() && !comp_from.is_bogus()) { |