comparison src/share/vm/classfile/classFileParser.cpp @ 17473:9b4ce069642e

Merge
author chegar
date Sat, 14 Sep 2013 20:40:34 +0100
parents 98a2169ed7ac 91b93f523ec6
children 6fa574bfd32a
comparison
equal deleted inserted replaced
17472:2a907fd129cb 17473:9b4ce069642e
26 #include "classfile/classFileParser.hpp" 26 #include "classfile/classFileParser.hpp"
27 #include "classfile/classLoader.hpp" 27 #include "classfile/classLoader.hpp"
28 #include "classfile/classLoaderData.hpp" 28 #include "classfile/classLoaderData.hpp"
29 #include "classfile/classLoaderData.inline.hpp" 29 #include "classfile/classLoaderData.inline.hpp"
30 #include "classfile/defaultMethods.hpp" 30 #include "classfile/defaultMethods.hpp"
31 #include "classfile/genericSignatures.hpp"
32 #include "classfile/javaClasses.hpp" 31 #include "classfile/javaClasses.hpp"
33 #include "classfile/symbolTable.hpp" 32 #include "classfile/symbolTable.hpp"
34 #include "classfile/systemDictionary.hpp" 33 #include "classfile/systemDictionary.hpp"
35 #include "classfile/verificationType.hpp" 34 #include "classfile/verificationType.hpp"
36 #include "classfile/verifier.hpp" 35 #include "classfile/verifier.hpp"
3037 } 3036 }
3038 } 3037 }
3039 return annotations; 3038 return annotations;
3040 } 3039 }
3041 3040
3042
3043 #ifdef ASSERT
3044 static void parseAndPrintGenericSignatures(
3045 instanceKlassHandle this_klass, TRAPS) {
3046 assert(ParseAllGenericSignatures == true, "Shouldn't call otherwise");
3047 ResourceMark rm;
3048
3049 if (this_klass->generic_signature() != NULL) {
3050 using namespace generic;
3051 ClassDescriptor* spec = ClassDescriptor::parse_generic_signature(this_klass(), CHECK);
3052
3053 tty->print_cr("Parsing %s", this_klass->generic_signature()->as_C_string());
3054 spec->print_on(tty);
3055
3056 for (int i = 0; i < this_klass->methods()->length(); ++i) {
3057 Method* m = this_klass->methods()->at(i);
3058 MethodDescriptor* method_spec = MethodDescriptor::parse_generic_signature(m, spec);
3059 Symbol* sig = m->generic_signature();
3060 if (sig == NULL) {
3061 sig = m->signature();
3062 }
3063 tty->print_cr("Parsing %s", sig->as_C_string());
3064 method_spec->print_on(tty);
3065 }
3066 }
3067 }
3068 #endif // def ASSERT
3069
3070
3071 instanceKlassHandle ClassFileParser::parse_super_class(int super_class_index, 3041 instanceKlassHandle ClassFileParser::parse_super_class(int super_class_index,
3072 TRAPS) { 3042 TRAPS) {
3073 instanceKlassHandle super_klass; 3043 instanceKlassHandle super_klass;
3074 if (super_class_index == 0) { 3044 if (super_class_index == 0) {
3075 check_property(_class_name == vmSymbols::java_lang_Object(), 3045 check_property(_class_name == vmSymbols::java_lang_Object(),
4058 4028
4059 // Allocate mirror and initialize static fields 4029 // Allocate mirror and initialize static fields
4060 java_lang_Class::create_mirror(this_klass, protection_domain, CHECK_(nullHandle)); 4030 java_lang_Class::create_mirror(this_klass, protection_domain, CHECK_(nullHandle));
4061 4031
4062 4032
4063 #ifdef ASSERT
4064 if (ParseAllGenericSignatures) {
4065 parseAndPrintGenericSignatures(this_klass, CHECK_(nullHandle));
4066 }
4067 #endif
4068
4069 // Generate any default methods - default methods are interface methods 4033 // Generate any default methods - default methods are interface methods
4070 // that have a default implementation. This is new with Lambda project. 4034 // that have a default implementation. This is new with Lambda project.
4071 if (has_default_methods && !access_flags.is_interface() && 4035 if (has_default_methods && !access_flags.is_interface() &&
4072 local_interfaces->length() > 0) { 4036 local_interfaces->length() > 0) {
4073 DefaultMethods::generate_default_methods( 4037 DefaultMethods::generate_default_methods(