35 |
35 |
36 int SystemDictionary::_number_of_modifications = 0; |
36 int SystemDictionary::_number_of_modifications = 0; |
37 |
37 |
38 oop SystemDictionary::_system_loader_lock_obj = NULL; |
38 oop SystemDictionary::_system_loader_lock_obj = NULL; |
39 |
39 |
40 klassOop SystemDictionary::_object_klass = NULL; |
40 klassOop SystemDictionary::_well_known_klasses[SystemDictionary::WKID_LIMIT] |
41 klassOop SystemDictionary::_string_klass = NULL; |
41 = { NULL /*, NULL...*/ }; |
42 klassOop SystemDictionary::_class_klass = NULL; |
42 |
43 klassOop SystemDictionary::_cloneable_klass = NULL; |
|
44 klassOop SystemDictionary::_classloader_klass = NULL; |
|
45 klassOop SystemDictionary::_serializable_klass = NULL; |
|
46 klassOop SystemDictionary::_system_klass = NULL; |
|
47 |
|
48 klassOop SystemDictionary::_throwable_klass = NULL; |
|
49 klassOop SystemDictionary::_error_klass = NULL; |
|
50 klassOop SystemDictionary::_threaddeath_klass = NULL; |
|
51 klassOop SystemDictionary::_exception_klass = NULL; |
|
52 klassOop SystemDictionary::_runtime_exception_klass = NULL; |
|
53 klassOop SystemDictionary::_classNotFoundException_klass = NULL; |
|
54 klassOop SystemDictionary::_noClassDefFoundError_klass = NULL; |
|
55 klassOop SystemDictionary::_linkageError_klass = NULL; |
|
56 klassOop SystemDictionary::_classCastException_klass = NULL; |
|
57 klassOop SystemDictionary::_arrayStoreException_klass = NULL; |
|
58 klassOop SystemDictionary::_virtualMachineError_klass = NULL; |
|
59 klassOop SystemDictionary::_outOfMemoryError_klass = NULL; |
|
60 klassOop SystemDictionary::_StackOverflowError_klass = NULL; |
|
61 klassOop SystemDictionary::_illegalMonitorStateException_klass = NULL; |
|
62 klassOop SystemDictionary::_protectionDomain_klass = NULL; |
|
63 klassOop SystemDictionary::_AccessControlContext_klass = NULL; |
|
64 |
|
65 klassOop SystemDictionary::_reference_klass = NULL; |
|
66 klassOop SystemDictionary::_soft_reference_klass = NULL; |
|
67 klassOop SystemDictionary::_weak_reference_klass = NULL; |
|
68 klassOop SystemDictionary::_final_reference_klass = NULL; |
|
69 klassOop SystemDictionary::_phantom_reference_klass = NULL; |
|
70 klassOop SystemDictionary::_finalizer_klass = NULL; |
|
71 |
|
72 klassOop SystemDictionary::_thread_klass = NULL; |
|
73 klassOop SystemDictionary::_threadGroup_klass = NULL; |
|
74 klassOop SystemDictionary::_properties_klass = NULL; |
|
75 klassOop SystemDictionary::_reflect_accessible_object_klass = NULL; |
|
76 klassOop SystemDictionary::_reflect_field_klass = NULL; |
|
77 klassOop SystemDictionary::_reflect_method_klass = NULL; |
|
78 klassOop SystemDictionary::_reflect_constructor_klass = NULL; |
|
79 klassOop SystemDictionary::_reflect_magic_klass = NULL; |
|
80 klassOop SystemDictionary::_reflect_method_accessor_klass = NULL; |
|
81 klassOop SystemDictionary::_reflect_constructor_accessor_klass = NULL; |
|
82 klassOop SystemDictionary::_reflect_delegating_classloader_klass = NULL; |
|
83 klassOop SystemDictionary::_reflect_constant_pool_klass = NULL; |
|
84 klassOop SystemDictionary::_reflect_unsafe_static_field_accessor_impl_klass = NULL; |
|
85 |
|
86 klassOop SystemDictionary::_vector_klass = NULL; |
|
87 klassOop SystemDictionary::_hashtable_klass = NULL; |
|
88 klassOop SystemDictionary::_stringBuffer_klass = NULL; |
|
89 |
|
90 klassOop SystemDictionary::_stackTraceElement_klass = NULL; |
|
91 |
|
92 klassOop SystemDictionary::_java_nio_Buffer_klass = NULL; |
|
93 |
|
94 klassOop SystemDictionary::_sun_misc_AtomicLongCSImpl_klass = NULL; |
|
95 klassOop SystemDictionary::_sun_jkernel_DownloadManager_klass = NULL; |
|
96 |
|
97 klassOop SystemDictionary::_boolean_klass = NULL; |
|
98 klassOop SystemDictionary::_char_klass = NULL; |
|
99 klassOop SystemDictionary::_float_klass = NULL; |
|
100 klassOop SystemDictionary::_double_klass = NULL; |
|
101 klassOop SystemDictionary::_byte_klass = NULL; |
|
102 klassOop SystemDictionary::_short_klass = NULL; |
|
103 klassOop SystemDictionary::_int_klass = NULL; |
|
104 klassOop SystemDictionary::_long_klass = NULL; |
|
105 klassOop SystemDictionary::_box_klasses[T_VOID+1] = { NULL /*, NULL...*/ }; |
43 klassOop SystemDictionary::_box_klasses[T_VOID+1] = { NULL /*, NULL...*/ }; |
106 |
44 |
107 oop SystemDictionary::_java_system_loader = NULL; |
45 oop SystemDictionary::_java_system_loader = NULL; |
108 |
46 |
109 bool SystemDictionary::_has_loadClassInternal = false; |
47 bool SystemDictionary::_has_loadClassInternal = false; |
1682 resolution_errors()->oops_do(f); |
1670 resolution_errors()->oops_do(f); |
1683 } |
1671 } |
1684 |
1672 |
1685 |
1673 |
1686 void SystemDictionary::preloaded_oops_do(OopClosure* f) { |
1674 void SystemDictionary::preloaded_oops_do(OopClosure* f) { |
1687 f->do_oop((oop*) &_string_klass); |
1675 f->do_oop((oop*) &wk_klass_name_limits[0]); |
1688 f->do_oop((oop*) &_object_klass); |
1676 f->do_oop((oop*) &wk_klass_name_limits[1]); |
1689 f->do_oop((oop*) &_class_klass); |
1677 |
1690 f->do_oop((oop*) &_cloneable_klass); |
1678 for (int k = (int)FIRST_WKID; k < (int)WKID_LIMIT; k++) { |
1691 f->do_oop((oop*) &_classloader_klass); |
1679 f->do_oop((oop*) &_well_known_klasses[k]); |
1692 f->do_oop((oop*) &_serializable_klass); |
1680 } |
1693 f->do_oop((oop*) &_system_klass); |
1681 |
1694 |
|
1695 f->do_oop((oop*) &_throwable_klass); |
|
1696 f->do_oop((oop*) &_error_klass); |
|
1697 f->do_oop((oop*) &_threaddeath_klass); |
|
1698 f->do_oop((oop*) &_exception_klass); |
|
1699 f->do_oop((oop*) &_runtime_exception_klass); |
|
1700 f->do_oop((oop*) &_classNotFoundException_klass); |
|
1701 f->do_oop((oop*) &_noClassDefFoundError_klass); |
|
1702 f->do_oop((oop*) &_linkageError_klass); |
|
1703 f->do_oop((oop*) &_classCastException_klass); |
|
1704 f->do_oop((oop*) &_arrayStoreException_klass); |
|
1705 f->do_oop((oop*) &_virtualMachineError_klass); |
|
1706 f->do_oop((oop*) &_outOfMemoryError_klass); |
|
1707 f->do_oop((oop*) &_StackOverflowError_klass); |
|
1708 f->do_oop((oop*) &_illegalMonitorStateException_klass); |
|
1709 f->do_oop((oop*) &_protectionDomain_klass); |
|
1710 f->do_oop((oop*) &_AccessControlContext_klass); |
|
1711 |
|
1712 f->do_oop((oop*) &_reference_klass); |
|
1713 f->do_oop((oop*) &_soft_reference_klass); |
|
1714 f->do_oop((oop*) &_weak_reference_klass); |
|
1715 f->do_oop((oop*) &_final_reference_klass); |
|
1716 f->do_oop((oop*) &_phantom_reference_klass); |
|
1717 f->do_oop((oop*) &_finalizer_klass); |
|
1718 |
|
1719 f->do_oop((oop*) &_thread_klass); |
|
1720 f->do_oop((oop*) &_threadGroup_klass); |
|
1721 f->do_oop((oop*) &_properties_klass); |
|
1722 f->do_oop((oop*) &_reflect_accessible_object_klass); |
|
1723 f->do_oop((oop*) &_reflect_field_klass); |
|
1724 f->do_oop((oop*) &_reflect_method_klass); |
|
1725 f->do_oop((oop*) &_reflect_constructor_klass); |
|
1726 f->do_oop((oop*) &_reflect_magic_klass); |
|
1727 f->do_oop((oop*) &_reflect_method_accessor_klass); |
|
1728 f->do_oop((oop*) &_reflect_constructor_accessor_klass); |
|
1729 f->do_oop((oop*) &_reflect_delegating_classloader_klass); |
|
1730 f->do_oop((oop*) &_reflect_constant_pool_klass); |
|
1731 f->do_oop((oop*) &_reflect_unsafe_static_field_accessor_impl_klass); |
|
1732 |
|
1733 f->do_oop((oop*) &_stringBuffer_klass); |
|
1734 f->do_oop((oop*) &_vector_klass); |
|
1735 f->do_oop((oop*) &_hashtable_klass); |
|
1736 |
|
1737 f->do_oop((oop*) &_stackTraceElement_klass); |
|
1738 |
|
1739 f->do_oop((oop*) &_java_nio_Buffer_klass); |
|
1740 |
|
1741 f->do_oop((oop*) &_sun_misc_AtomicLongCSImpl_klass); |
|
1742 f->do_oop((oop*) &_sun_jkernel_DownloadManager_klass); |
|
1743 |
|
1744 f->do_oop((oop*) &_boolean_klass); |
|
1745 f->do_oop((oop*) &_char_klass); |
|
1746 f->do_oop((oop*) &_float_klass); |
|
1747 f->do_oop((oop*) &_double_klass); |
|
1748 f->do_oop((oop*) &_byte_klass); |
|
1749 f->do_oop((oop*) &_short_klass); |
|
1750 f->do_oop((oop*) &_int_klass); |
|
1751 f->do_oop((oop*) &_long_klass); |
|
1752 { |
1682 { |
1753 for (int i = 0; i < T_VOID+1; i++) { |
1683 for (int i = 0; i < T_VOID+1; i++) { |
1754 if (_box_klasses[i] != NULL) { |
1684 if (_box_klasses[i] != NULL) { |
1755 assert(i >= T_BOOLEAN, "checking"); |
1685 assert(i >= T_BOOLEAN, "checking"); |
1756 f->do_oop((oop*) &_box_klasses[i]); |
1686 f->do_oop((oop*) &_box_klasses[i]); |
1839 _system_loader_lock_obj = oopFactory::new_system_objArray(0, CHECK); |
1769 _system_loader_lock_obj = oopFactory::new_system_objArray(0, CHECK); |
1840 // Initialize basic classes |
1770 // Initialize basic classes |
1841 initialize_preloaded_classes(CHECK); |
1771 initialize_preloaded_classes(CHECK); |
1842 } |
1772 } |
1843 |
1773 |
|
1774 // Compact table of directions on the initialization of klasses: |
|
1775 static const short wk_init_info[] = { |
|
1776 #define WK_KLASS_INIT_INFO(name, symbol, option) \ |
|
1777 ( ((int)vmSymbols::VM_SYMBOL_ENUM_NAME(symbol) \ |
|
1778 << SystemDictionary::CEIL_LG_OPTION_LIMIT) \ |
|
1779 | (int)SystemDictionary::option ), |
|
1780 WK_KLASSES_DO(WK_KLASS_INIT_INFO) |
|
1781 #undef WK_KLASS_INIT_INFO |
|
1782 0 |
|
1783 }; |
|
1784 |
|
1785 bool SystemDictionary::initialize_wk_klass(WKID id, int init_opt, TRAPS) { |
|
1786 assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob"); |
|
1787 int info = wk_init_info[id - FIRST_WKID]; |
|
1788 int sid = (info >> CEIL_LG_OPTION_LIMIT); |
|
1789 symbolHandle symbol = vmSymbolHandles::symbol_handle_at((vmSymbols::SID)sid); |
|
1790 klassOop* klassp = &_well_known_klasses[id]; |
|
1791 bool must_load = (init_opt < SystemDictionary::Opt); |
|
1792 bool try_load = true; |
|
1793 if (init_opt == SystemDictionary::Opt_Kernel) { |
|
1794 #ifndef KERNEL |
|
1795 try_load = false; |
|
1796 #endif //KERNEL |
|
1797 } |
|
1798 if ((*klassp) == NULL && try_load) { |
|
1799 if (must_load) { |
|
1800 (*klassp) = resolve_or_fail(symbol, true, CHECK_0); // load required class |
|
1801 } else { |
|
1802 (*klassp) = resolve_or_null(symbol, CHECK_0); // load optional klass |
|
1803 } |
|
1804 } |
|
1805 return ((*klassp) != NULL); |
|
1806 } |
|
1807 |
|
1808 void SystemDictionary::initialize_wk_klasses_until(WKID limit_id, WKID &start_id, TRAPS) { |
|
1809 assert((int)start_id <= (int)limit_id, "IDs are out of order!"); |
|
1810 for (int id = (int)start_id; id < (int)limit_id; id++) { |
|
1811 assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob"); |
|
1812 int info = wk_init_info[id - FIRST_WKID]; |
|
1813 int sid = (info >> CEIL_LG_OPTION_LIMIT); |
|
1814 int opt = (info & right_n_bits(CEIL_LG_OPTION_LIMIT)); |
|
1815 |
|
1816 initialize_wk_klass((WKID)id, opt, CHECK); |
|
1817 |
|
1818 // Update limits, so find_well_known_klass can be very fast: |
|
1819 symbolOop s = vmSymbols::symbol_at((vmSymbols::SID)sid); |
|
1820 if (wk_klass_name_limits[1] == NULL) { |
|
1821 wk_klass_name_limits[0] = wk_klass_name_limits[1] = s; |
|
1822 } else if (wk_klass_name_limits[1] < s) { |
|
1823 wk_klass_name_limits[1] = s; |
|
1824 } else if (wk_klass_name_limits[0] > s) { |
|
1825 wk_klass_name_limits[0] = s; |
|
1826 } |
|
1827 } |
|
1828 } |
|
1829 |
1844 |
1830 |
1845 void SystemDictionary::initialize_preloaded_classes(TRAPS) { |
1831 void SystemDictionary::initialize_preloaded_classes(TRAPS) { |
1846 assert(_object_klass == NULL, "preloaded classes should only be initialized once"); |
1832 assert(WK_KLASS(object_klass) == NULL, "preloaded classes should only be initialized once"); |
1847 // Preload commonly used klasses |
1833 // Preload commonly used klasses |
1848 _object_klass = resolve_or_fail(vmSymbolHandles::java_lang_Object(), true, CHECK); |
1834 WKID scan = FIRST_WKID; |
1849 _string_klass = resolve_or_fail(vmSymbolHandles::java_lang_String(), true, CHECK); |
1835 // first do Object, String, Class |
1850 _class_klass = resolve_or_fail(vmSymbolHandles::java_lang_Class(), true, CHECK); |
1836 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(class_klass), scan, CHECK); |
1851 debug_only(instanceKlass::verify_class_klass_nonstatic_oop_maps(_class_klass)); |
1837 |
|
1838 debug_only(instanceKlass::verify_class_klass_nonstatic_oop_maps(WK_KLASS(class_klass))); |
|
1839 |
1852 // Fixup mirrors for classes loaded before java.lang.Class. |
1840 // Fixup mirrors for classes loaded before java.lang.Class. |
1853 // These calls iterate over the objects currently in the perm gen |
1841 // These calls iterate over the objects currently in the perm gen |
1854 // so calling them at this point is matters (not before when there |
1842 // so calling them at this point is matters (not before when there |
1855 // are fewer objects and not later after there are more objects |
1843 // are fewer objects and not later after there are more objects |
1856 // in the perm gen. |
1844 // in the perm gen. |
1857 Universe::initialize_basic_type_mirrors(CHECK); |
1845 Universe::initialize_basic_type_mirrors(CHECK); |
1858 Universe::fixup_mirrors(CHECK); |
1846 Universe::fixup_mirrors(CHECK); |
1859 |
1847 |
1860 _cloneable_klass = resolve_or_fail(vmSymbolHandles::java_lang_Cloneable(), true, CHECK); |
1848 // do a bunch more: |
1861 _classloader_klass = resolve_or_fail(vmSymbolHandles::java_lang_ClassLoader(), true, CHECK); |
1849 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(reference_klass), scan, CHECK); |
1862 _serializable_klass = resolve_or_fail(vmSymbolHandles::java_io_Serializable(), true, CHECK); |
|
1863 _system_klass = resolve_or_fail(vmSymbolHandles::java_lang_System(), true, CHECK); |
|
1864 |
|
1865 _throwable_klass = resolve_or_fail(vmSymbolHandles::java_lang_Throwable(), true, CHECK); |
|
1866 _error_klass = resolve_or_fail(vmSymbolHandles::java_lang_Error(), true, CHECK); |
|
1867 _threaddeath_klass = resolve_or_fail(vmSymbolHandles::java_lang_ThreadDeath(), true, CHECK); |
|
1868 _exception_klass = resolve_or_fail(vmSymbolHandles::java_lang_Exception(), true, CHECK); |
|
1869 _runtime_exception_klass = resolve_or_fail(vmSymbolHandles::java_lang_RuntimeException(), true, CHECK); |
|
1870 _protectionDomain_klass = resolve_or_fail(vmSymbolHandles::java_security_ProtectionDomain(), true, CHECK); |
|
1871 _AccessControlContext_klass = resolve_or_fail(vmSymbolHandles::java_security_AccessControlContext(), true, CHECK); |
|
1872 _classNotFoundException_klass = resolve_or_fail(vmSymbolHandles::java_lang_ClassNotFoundException(), true, CHECK); |
|
1873 _noClassDefFoundError_klass = resolve_or_fail(vmSymbolHandles::java_lang_NoClassDefFoundError(), true, CHECK); |
|
1874 _linkageError_klass = resolve_or_fail(vmSymbolHandles::java_lang_LinkageError(), true, CHECK); |
|
1875 _classCastException_klass = resolve_or_fail(vmSymbolHandles::java_lang_ClassCastException(), true, CHECK); |
|
1876 _arrayStoreException_klass = resolve_or_fail(vmSymbolHandles::java_lang_ArrayStoreException(), true, CHECK); |
|
1877 _virtualMachineError_klass = resolve_or_fail(vmSymbolHandles::java_lang_VirtualMachineError(), true, CHECK); |
|
1878 _outOfMemoryError_klass = resolve_or_fail(vmSymbolHandles::java_lang_OutOfMemoryError(), true, CHECK); |
|
1879 _StackOverflowError_klass = resolve_or_fail(vmSymbolHandles::java_lang_StackOverflowError(), true, CHECK); |
|
1880 _illegalMonitorStateException_klass = resolve_or_fail(vmSymbolHandles::java_lang_IllegalMonitorStateException(), true, CHECK); |
|
1881 |
1850 |
1882 // Preload ref klasses and set reference types |
1851 // Preload ref klasses and set reference types |
1883 _reference_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_Reference(), true, CHECK); |
1852 instanceKlass::cast(WK_KLASS(reference_klass))->set_reference_type(REF_OTHER); |
1884 instanceKlass::cast(_reference_klass)->set_reference_type(REF_OTHER); |
1853 instanceRefKlass::update_nonstatic_oop_maps(WK_KLASS(reference_klass)); |
1885 instanceRefKlass::update_nonstatic_oop_maps(_reference_klass); |
1854 |
1886 |
1855 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(phantom_reference_klass), scan, CHECK); |
1887 _soft_reference_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_SoftReference(), true, CHECK); |
1856 instanceKlass::cast(WK_KLASS(soft_reference_klass))->set_reference_type(REF_SOFT); |
1888 instanceKlass::cast(_soft_reference_klass)->set_reference_type(REF_SOFT); |
1857 instanceKlass::cast(WK_KLASS(weak_reference_klass))->set_reference_type(REF_WEAK); |
1889 _weak_reference_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_WeakReference(), true, CHECK); |
1858 instanceKlass::cast(WK_KLASS(final_reference_klass))->set_reference_type(REF_FINAL); |
1890 instanceKlass::cast(_weak_reference_klass)->set_reference_type(REF_WEAK); |
1859 instanceKlass::cast(WK_KLASS(phantom_reference_klass))->set_reference_type(REF_PHANTOM); |
1891 _final_reference_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_FinalReference(), true, CHECK); |
1860 |
1892 instanceKlass::cast(_final_reference_klass)->set_reference_type(REF_FINAL); |
1861 initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK); |
1893 _phantom_reference_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_PhantomReference(), true, CHECK); |
1862 |
1894 instanceKlass::cast(_phantom_reference_klass)->set_reference_type(REF_PHANTOM); |
1863 _box_klasses[T_BOOLEAN] = WK_KLASS(boolean_klass); |
1895 _finalizer_klass = resolve_or_fail(vmSymbolHandles::java_lang_ref_Finalizer(), true, CHECK); |
1864 _box_klasses[T_CHAR] = WK_KLASS(char_klass); |
1896 |
1865 _box_klasses[T_FLOAT] = WK_KLASS(float_klass); |
1897 _thread_klass = resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK); |
1866 _box_klasses[T_DOUBLE] = WK_KLASS(double_klass); |
1898 _threadGroup_klass = resolve_or_fail(vmSymbolHandles::java_lang_ThreadGroup(), true, CHECK); |
1867 _box_klasses[T_BYTE] = WK_KLASS(byte_klass); |
1899 _properties_klass = resolve_or_fail(vmSymbolHandles::java_util_Properties(), true, CHECK); |
1868 _box_klasses[T_SHORT] = WK_KLASS(short_klass); |
1900 _reflect_accessible_object_klass = resolve_or_fail(vmSymbolHandles::java_lang_reflect_AccessibleObject(), true, CHECK); |
1869 _box_klasses[T_INT] = WK_KLASS(int_klass); |
1901 _reflect_field_klass = resolve_or_fail(vmSymbolHandles::java_lang_reflect_Field(), true, CHECK); |
1870 _box_klasses[T_LONG] = WK_KLASS(long_klass); |
1902 _reflect_method_klass = resolve_or_fail(vmSymbolHandles::java_lang_reflect_Method(), true, CHECK); |
1871 //_box_klasses[T_OBJECT] = WK_KLASS(object_klass); |
1903 _reflect_constructor_klass = resolve_or_fail(vmSymbolHandles::java_lang_reflect_Constructor(), true, CHECK); |
1872 //_box_klasses[T_ARRAY] = WK_KLASS(object_klass); |
1904 // Universe::is_gte_jdk14x_version() is not set up by this point. |
1873 |
1905 // It's okay if these turn out to be NULL in non-1.4 JDKs. |
|
1906 _reflect_magic_klass = resolve_or_null(vmSymbolHandles::sun_reflect_MagicAccessorImpl(), CHECK); |
|
1907 _reflect_method_accessor_klass = resolve_or_null(vmSymbolHandles::sun_reflect_MethodAccessorImpl(), CHECK); |
|
1908 _reflect_constructor_accessor_klass = resolve_or_null(vmSymbolHandles::sun_reflect_ConstructorAccessorImpl(), CHECK); |
|
1909 _reflect_delegating_classloader_klass = resolve_or_null(vmSymbolHandles::sun_reflect_DelegatingClassLoader(), CHECK); |
|
1910 _reflect_constant_pool_klass = resolve_or_null(vmSymbolHandles::sun_reflect_ConstantPool(), CHECK); |
|
1911 _reflect_unsafe_static_field_accessor_impl_klass = resolve_or_null(vmSymbolHandles::sun_reflect_UnsafeStaticFieldAccessorImpl(), CHECK); |
|
1912 |
|
1913 _vector_klass = resolve_or_fail(vmSymbolHandles::java_util_Vector(), true, CHECK); |
|
1914 _hashtable_klass = resolve_or_fail(vmSymbolHandles::java_util_Hashtable(), true, CHECK); |
|
1915 _stringBuffer_klass = resolve_or_fail(vmSymbolHandles::java_lang_StringBuffer(), true, CHECK); |
|
1916 |
|
1917 // It's NULL in non-1.4 JDKs. |
|
1918 _stackTraceElement_klass = resolve_or_null(vmSymbolHandles::java_lang_StackTraceElement(), CHECK); |
|
1919 |
|
1920 // Universe::is_gte_jdk14x_version() is not set up by this point. |
|
1921 // It's okay if this turns out to be NULL in non-1.4 JDKs. |
|
1922 _java_nio_Buffer_klass = resolve_or_null(vmSymbolHandles::java_nio_Buffer(), CHECK); |
|
1923 |
|
1924 // If this class isn't present, it won't be referenced. |
|
1925 _sun_misc_AtomicLongCSImpl_klass = resolve_or_null(vmSymbolHandles::sun_misc_AtomicLongCSImpl(), CHECK); |
|
1926 #ifdef KERNEL |
1874 #ifdef KERNEL |
1927 _sun_jkernel_DownloadManager_klass = resolve_or_null(vmSymbolHandles::sun_jkernel_DownloadManager(), CHECK); |
1875 if (sun_jkernel_DownloadManager_klass() == NULL) { |
1928 if (_sun_jkernel_DownloadManager_klass == NULL) { |
|
1929 warning("Cannot find sun/jkernel/DownloadManager"); |
1876 warning("Cannot find sun/jkernel/DownloadManager"); |
1930 } |
1877 } |
1931 #endif // KERNEL |
1878 #endif // KERNEL |
1932 |
|
1933 // Preload boxing klasses |
|
1934 _boolean_klass = resolve_or_fail(vmSymbolHandles::java_lang_Boolean(), true, CHECK); |
|
1935 _char_klass = resolve_or_fail(vmSymbolHandles::java_lang_Character(), true, CHECK); |
|
1936 _float_klass = resolve_or_fail(vmSymbolHandles::java_lang_Float(), true, CHECK); |
|
1937 _double_klass = resolve_or_fail(vmSymbolHandles::java_lang_Double(), true, CHECK); |
|
1938 _byte_klass = resolve_or_fail(vmSymbolHandles::java_lang_Byte(), true, CHECK); |
|
1939 _short_klass = resolve_or_fail(vmSymbolHandles::java_lang_Short(), true, CHECK); |
|
1940 _int_klass = resolve_or_fail(vmSymbolHandles::java_lang_Integer(), true, CHECK); |
|
1941 _long_klass = resolve_or_fail(vmSymbolHandles::java_lang_Long(), true, CHECK); |
|
1942 |
|
1943 _box_klasses[T_BOOLEAN] = _boolean_klass; |
|
1944 _box_klasses[T_CHAR] = _char_klass; |
|
1945 _box_klasses[T_FLOAT] = _float_klass; |
|
1946 _box_klasses[T_DOUBLE] = _double_klass; |
|
1947 _box_klasses[T_BYTE] = _byte_klass; |
|
1948 _box_klasses[T_SHORT] = _short_klass; |
|
1949 _box_klasses[T_INT] = _int_klass; |
|
1950 _box_klasses[T_LONG] = _long_klass; |
|
1951 //_box_klasses[T_OBJECT] = _object_klass; |
|
1952 //_box_klasses[T_ARRAY] = _object_klass; |
|
1953 |
|
1954 { // Compute whether we should use loadClass or loadClassInternal when loading classes. |
1879 { // Compute whether we should use loadClass or loadClassInternal when loading classes. |
1955 methodOop method = instanceKlass::cast(classloader_klass())->find_method(vmSymbols::loadClassInternal_name(), vmSymbols::string_class_signature()); |
1880 methodOop method = instanceKlass::cast(classloader_klass())->find_method(vmSymbols::loadClassInternal_name(), vmSymbols::string_class_signature()); |
1956 _has_loadClassInternal = (method != NULL); |
1881 _has_loadClassInternal = (method != NULL); |
1957 } |
1882 } |
1958 |
1883 |