Mercurial > hg > graal-jvmci-8
comparison src/share/vm/memory/universe.cpp @ 11010:b295e132102d
8001330: Improve on checking order
Reviewed-by: acorn, hawtin
author | mullan |
---|---|
date | Fri, 05 Apr 2013 10:18:36 -0400 |
parents | 8be1318fbe77 |
children | 7ee0d5c53c78 |
comparison
equal
deleted
inserted
replaced
11009:f75faf51e8c4 | 11010:b295e132102d |
---|---|
106 Array<Klass*>* Universe::_the_array_interfaces_array = NULL; | 106 Array<Klass*>* Universe::_the_array_interfaces_array = NULL; |
107 oop Universe::_the_null_string = NULL; | 107 oop Universe::_the_null_string = NULL; |
108 oop Universe::_the_min_jint_string = NULL; | 108 oop Universe::_the_min_jint_string = NULL; |
109 LatestMethodOopCache* Universe::_finalizer_register_cache = NULL; | 109 LatestMethodOopCache* Universe::_finalizer_register_cache = NULL; |
110 LatestMethodOopCache* Universe::_loader_addClass_cache = NULL; | 110 LatestMethodOopCache* Universe::_loader_addClass_cache = NULL; |
111 LatestMethodOopCache* Universe::_pd_implies_cache = NULL; | |
111 ActiveMethodOopsCache* Universe::_reflect_invoke_cache = NULL; | 112 ActiveMethodOopsCache* Universe::_reflect_invoke_cache = NULL; |
112 oop Universe::_out_of_memory_error_java_heap = NULL; | 113 oop Universe::_out_of_memory_error_java_heap = NULL; |
113 oop Universe::_out_of_memory_error_perm_gen = NULL; | 114 oop Universe::_out_of_memory_error_perm_gen = NULL; |
114 oop Universe::_out_of_memory_error_array_size = NULL; | 115 oop Universe::_out_of_memory_error_array_size = NULL; |
115 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL; | 116 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL; |
222 f->do_ptr((void**)&_the_empty_method_array); | 223 f->do_ptr((void**)&_the_empty_method_array); |
223 f->do_ptr((void**)&_the_empty_klass_array); | 224 f->do_ptr((void**)&_the_empty_klass_array); |
224 _finalizer_register_cache->serialize(f); | 225 _finalizer_register_cache->serialize(f); |
225 _loader_addClass_cache->serialize(f); | 226 _loader_addClass_cache->serialize(f); |
226 _reflect_invoke_cache->serialize(f); | 227 _reflect_invoke_cache->serialize(f); |
228 _pd_implies_cache->serialize(f); | |
227 } | 229 } |
228 | 230 |
229 void Universe::check_alignment(uintx size, uintx alignment, const char* name) { | 231 void Universe::check_alignment(uintx size, uintx alignment, const char* name) { |
230 if (size < alignment || size % alignment != 0) { | 232 if (size < alignment || size % alignment != 0) { |
231 ResourceMark rm; | 233 ResourceMark rm; |
646 | 648 |
647 // We have a heap so create the Method* caches before | 649 // We have a heap so create the Method* caches before |
648 // Metaspace::initialize_shared_spaces() tries to populate them. | 650 // Metaspace::initialize_shared_spaces() tries to populate them. |
649 Universe::_finalizer_register_cache = new LatestMethodOopCache(); | 651 Universe::_finalizer_register_cache = new LatestMethodOopCache(); |
650 Universe::_loader_addClass_cache = new LatestMethodOopCache(); | 652 Universe::_loader_addClass_cache = new LatestMethodOopCache(); |
653 Universe::_pd_implies_cache = new LatestMethodOopCache(); | |
651 Universe::_reflect_invoke_cache = new ActiveMethodOopsCache(); | 654 Universe::_reflect_invoke_cache = new ActiveMethodOopsCache(); |
652 | 655 |
653 if (UseSharedSpaces) { | 656 if (UseSharedSpaces) { |
654 // Read the data structures supporting the shared spaces (shared | 657 // Read the data structures supporting the shared spaces (shared |
655 // system dictionary, symbol table, etc.). After that, access to | 658 // system dictionary, symbol table, etc.). After that, access to |
1080 "java.lang.ClassLoader.addClass", false); | 1083 "java.lang.ClassLoader.addClass", false); |
1081 } | 1084 } |
1082 Universe::_loader_addClass_cache->init( | 1085 Universe::_loader_addClass_cache->init( |
1083 SystemDictionary::ClassLoader_klass(), m, CHECK_false); | 1086 SystemDictionary::ClassLoader_klass(), m, CHECK_false); |
1084 | 1087 |
1088 // Setup method for checking protection domain | |
1089 InstanceKlass::cast(SystemDictionary::ProtectionDomain_klass())->link_class(CHECK_false); | |
1090 m = InstanceKlass::cast(SystemDictionary::ProtectionDomain_klass())-> | |
1091 find_method(vmSymbols::impliesCreateAccessControlContext_name(), | |
1092 vmSymbols::void_boolean_signature()); | |
1093 // Allow NULL which should only happen with bootstrapping. | |
1094 if (m != NULL) { | |
1095 if (m->is_static()) { | |
1096 // NoSuchMethodException doesn't actually work because it tries to run the | |
1097 // <init> function before java_lang_Class is linked. Print error and exit. | |
1098 tty->print_cr("ProtectionDomain.impliesCreateAccessControlContext() has the wrong linkage"); | |
1099 return false; // initialization failed | |
1100 } | |
1101 Universe::_pd_implies_cache->init( | |
1102 SystemDictionary::ProtectionDomain_klass(), m, CHECK_false);; | |
1103 } | |
1104 | |
1085 // The folowing is initializing converter functions for serialization in | 1105 // The folowing is initializing converter functions for serialization in |
1086 // JVM.cpp. If we clean up the StrictMath code above we may want to find | 1106 // JVM.cpp. If we clean up the StrictMath code above we may want to find |
1087 // a better solution for this as well. | 1107 // a better solution for this as well. |
1088 initialize_converter_functions(); | 1108 initialize_converter_functions(); |
1089 | 1109 |
1495 return false; | 1515 return false; |
1496 } | 1516 } |
1497 | 1517 |
1498 | 1518 |
1499 Method* LatestMethodOopCache::get_Method() { | 1519 Method* LatestMethodOopCache::get_Method() { |
1520 if (klass() == NULL) return NULL; | |
1500 InstanceKlass* ik = InstanceKlass::cast(klass()); | 1521 InstanceKlass* ik = InstanceKlass::cast(klass()); |
1501 Method* m = ik->method_with_idnum(method_idnum()); | 1522 Method* m = ik->method_with_idnum(method_idnum()); |
1502 assert(m != NULL, "sanity check"); | 1523 assert(m != NULL, "sanity check"); |
1503 return m; | 1524 return m; |
1504 } | 1525 } |