hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 36508 5f9eee6b383b
parent 35918 1e48ea715a0b
child 37179 4dbcb3a642d2
equal deleted inserted replaced
36507:c80f6ecb0bb3 36508:5f9eee6b383b
    22  *
    22  *
    23  */
    23  */
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
    26 #include "classfile/altHashing.hpp"
    26 #include "classfile/altHashing.hpp"
       
    27 #include "classfile/classLoaderData.inline.hpp"
    27 #include "classfile/javaClasses.inline.hpp"
    28 #include "classfile/javaClasses.inline.hpp"
       
    29 #include "classfile/moduleEntry.hpp"
    28 #include "classfile/stringTable.hpp"
    30 #include "classfile/stringTable.hpp"
    29 #include "classfile/vmSymbols.hpp"
    31 #include "classfile/vmSymbols.hpp"
    30 #include "code/debugInfo.hpp"
    32 #include "code/debugInfo.hpp"
    31 #include "code/dependencyContext.hpp"
    33 #include "code/dependencyContext.hpp"
    32 #include "code/pcDesc.hpp"
    34 #include "code/pcDesc.hpp"
   766           fs.set_offset(real_offset);
   768           fs.set_offset(real_offset);
   767         }
   769         }
   768       }
   770       }
   769     }
   771     }
   770   }
   772   }
   771   create_mirror(k, Handle(NULL), Handle(NULL), CHECK);
   773   create_mirror(k, Handle(NULL), Handle(NULL), Handle(NULL), CHECK);
   772 }
   774 }
   773 
   775 
   774 void java_lang_Class::initialize_mirror_fields(KlassHandle k,
   776 void java_lang_Class::initialize_mirror_fields(KlassHandle k,
   775                                                Handle mirror,
   777                                                Handle mirror,
   776                                                Handle protection_domain,
   778                                                Handle protection_domain,
   787   // Initialize static fields
   789   // Initialize static fields
   788   InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, mirror, CHECK);
   790   InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, mirror, CHECK);
   789 }
   791 }
   790 
   792 
   791 void java_lang_Class::create_mirror(KlassHandle k, Handle class_loader,
   793 void java_lang_Class::create_mirror(KlassHandle k, Handle class_loader,
   792                                     Handle protection_domain, TRAPS) {
   794                                     Handle module, Handle protection_domain, TRAPS) {
   793   assert(k->java_mirror() == NULL, "should only assign mirror once");
   795   assert(k->java_mirror() == NULL, "should only assign mirror once");
   794   // Use this moment of initialization to cache modifier_flags also,
   796   // Use this moment of initialization to cache modifier_flags also,
   795   // to support Class.getModifiers().  Instance classes recalculate
   797   // to support Class.getModifiers().  Instance classes recalculate
   796   // the cached flags after the class file is parsed, but before the
   798   // the cached flags after the class file is parsed, but before the
   797   // class is put into the system dictionary.
   799   // class is put into the system dictionary.
   847 
   849 
   848     // set the classLoader field in the java_lang_Class instance
   850     // set the classLoader field in the java_lang_Class instance
   849     assert(class_loader() == k->class_loader(), "should be same");
   851     assert(class_loader() == k->class_loader(), "should be same");
   850     set_class_loader(mirror(), class_loader());
   852     set_class_loader(mirror(), class_loader());
   851 
   853 
       
   854     // set the module field in the java_lang_Class instance
       
   855     // This may be null during bootstrap but will get fixed up later on.
       
   856     set_module(mirror(), module());
       
   857 
   852     // Setup indirection from klass->mirror last
   858     // Setup indirection from klass->mirror last
   853     // after any exceptions can happen during allocations.
   859     // after any exceptions can happen during allocations.
   854     if (!k.is_null()) {
   860     if (!k.is_null()) {
   855       k->set_java_mirror(mirror());
   861       k->set_java_mirror(mirror());
       
   862     }
       
   863 
       
   864     // Keep list of classes needing java.base module fixup.
       
   865     if (!ModuleEntryTable::javabase_defined()) {
       
   866       if (fixup_module_field_list() == NULL) {
       
   867         GrowableArray<Klass*>* list =
       
   868           new (ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(500, true);
       
   869         set_fixup_module_field_list(list);
       
   870       }
       
   871       fixup_module_field_list()->push(k());
   856     }
   872     }
   857   } else {
   873   } else {
   858     if (fixup_mirror_list() == NULL) {
   874     if (fixup_mirror_list() == NULL) {
   859       GrowableArray<Klass*>* list =
   875       GrowableArray<Klass*>* list =
   860        new (ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(40, true);
   876        new (ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(40, true);
   862     }
   878     }
   863     fixup_mirror_list()->push(k());
   879     fixup_mirror_list()->push(k());
   864   }
   880   }
   865 }
   881 }
   866 
   882 
       
   883 void java_lang_Class::fixup_module_field(KlassHandle k, Handle module) {
       
   884   assert(_module_offset != 0, "must have been computed already");
       
   885   java_lang_Class::set_module(k->java_mirror(), module());
       
   886 }
   867 
   887 
   868 int  java_lang_Class::oop_size(oop java_class) {
   888 int  java_lang_Class::oop_size(oop java_class) {
   869   assert(_oop_size_offset != 0, "must be set");
   889   assert(_oop_size_offset != 0, "must be set");
   870   return java_class->int_field(_oop_size_offset);
   890   return java_class->int_field(_oop_size_offset);
   871 }
   891 }
   927 }
   947 }
   928 
   948 
   929 oop java_lang_Class::class_loader(oop java_class) {
   949 oop java_lang_Class::class_loader(oop java_class) {
   930   assert(_class_loader_offset != 0, "must be set");
   950   assert(_class_loader_offset != 0, "must be set");
   931   return java_class->obj_field(_class_loader_offset);
   951   return java_class->obj_field(_class_loader_offset);
       
   952 }
       
   953 
       
   954 oop java_lang_Class::module(oop java_class) {
       
   955   assert(_module_offset != 0, "must be set");
       
   956   return java_class->obj_field(_module_offset);
       
   957 }
       
   958 
       
   959 void java_lang_Class::set_module(oop java_class, oop module) {
       
   960   assert(_module_offset != 0, "must be set");
       
   961   java_class->obj_field_put(_module_offset, module);
   932 }
   962 }
   933 
   963 
   934 oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
   964 oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
   935   // This should be improved by adding a field at the Java level or by
   965   // This should be improved by adding a field at the Java level or by
   936   // introducing a new VM klass (see comment in ClassFileParser)
   966   // introducing a new VM klass (see comment in ClassFileParser)
  1114 
  1144 
  1115   compute_offset(_component_mirror_offset,
  1145   compute_offset(_component_mirror_offset,
  1116                  k, vmSymbols::componentType_name(),
  1146                  k, vmSymbols::componentType_name(),
  1117                  vmSymbols::class_signature());
  1147                  vmSymbols::class_signature());
  1118 
  1148 
       
  1149   compute_offset(_module_offset,
       
  1150                  k, vmSymbols::module_name(),
       
  1151                  vmSymbols::module_signature());
       
  1152 
  1119   // Init lock is a C union with component_mirror.  Only instanceKlass mirrors have
  1153   // Init lock is a C union with component_mirror.  Only instanceKlass mirrors have
  1120   // init_lock and only ArrayKlass mirrors have component_mirror.  Since both are oops
  1154   // init_lock and only ArrayKlass mirrors have component_mirror.  Since both are oops
  1121   // GC treats them the same.
  1155   // GC treats them the same.
  1122   _init_lock_offset = _component_mirror_offset;
  1156   _init_lock_offset = _component_mirror_offset;
  1123 
  1157 
  1666   if (source != NULL) {
  1700   if (source != NULL) {
  1667     source_file_name = source->as_C_string();
  1701     source_file_name = source->as_C_string();
  1668     buf_len += (int)strlen(source_file_name);
  1702     buf_len += (int)strlen(source_file_name);
  1669   }
  1703   }
  1670 
  1704 
       
  1705   char *module_name = NULL, *module_version = NULL;
       
  1706   ModuleEntry* module = holder->module();
       
  1707   if (module->is_named()) {
       
  1708     module_name = module->name()->as_C_string();
       
  1709     buf_len += (int)strlen(module_name);
       
  1710     if (module->version() != NULL) {
       
  1711       module_version = module->version()->as_C_string();
       
  1712       buf_len += (int)strlen(module_version);
       
  1713     }
       
  1714   }
       
  1715 
  1671   // Allocate temporary buffer with extra space for formatting and line number
  1716   // Allocate temporary buffer with extra space for formatting and line number
  1672   char* buf = NEW_RESOURCE_ARRAY(char, buf_len + 64);
  1717   char* buf = NEW_RESOURCE_ARRAY(char, buf_len + 64);
  1673 
  1718 
  1674   // Print stack trace line in buffer
  1719   // Print stack trace line in buffer
  1675   sprintf(buf, "\tat %s.%s", klass_name, method_name);
  1720   sprintf(buf, "\tat %s.%s(", klass_name, method_name);
       
  1721 
       
  1722   // Print module information
       
  1723   if (module_name != NULL) {
       
  1724     if (module_version != NULL) {
       
  1725       sprintf(buf + (int)strlen(buf), "%s@%s/", module_name, module_version);
       
  1726     } else {
       
  1727       sprintf(buf + (int)strlen(buf), "%s/", module_name);
       
  1728     }
       
  1729   }
  1676 
  1730 
  1677   if (!version_matches(method, version)) {
  1731   if (!version_matches(method, version)) {
  1678     strcat(buf, "(Redefined)");
  1732     strcat(buf, "Redefined)");
  1679   } else {
  1733   } else {
  1680     int line_number = Backtrace::get_line_number(method, bci);
  1734     int line_number = Backtrace::get_line_number(method, bci);
  1681     if (line_number == -2) {
  1735     if (line_number == -2) {
  1682       strcat(buf, "(Native Method)");
  1736       strcat(buf, "Native Method)");
  1683     } else {
  1737     } else {
  1684       if (source_file_name != NULL && (line_number != -1)) {
  1738       if (source_file_name != NULL && (line_number != -1)) {
  1685         // Sourcename and linenumber
  1739         // Sourcename and linenumber
  1686         sprintf(buf + (int)strlen(buf), "(%s:%d)", source_file_name, line_number);
  1740         sprintf(buf + (int)strlen(buf), "%s:%d)", source_file_name, line_number);
  1687       } else if (source_file_name != NULL) {
  1741       } else if (source_file_name != NULL) {
  1688         // Just sourcename
  1742         // Just sourcename
  1689         sprintf(buf + (int)strlen(buf), "(%s)", source_file_name);
  1743         sprintf(buf + (int)strlen(buf), "%s)", source_file_name);
  1690       } else {
  1744       } else {
  1691         // Neither sourcename nor linenumber
  1745         // Neither sourcename nor linenumber
  1692         sprintf(buf + (int)strlen(buf), "(Unknown Source)");
  1746         sprintf(buf + (int)strlen(buf), "Unknown Source)");
  1693       }
  1747       }
  1694       nmethod* nm = method->code();
  1748       nmethod* nm = method->code();
  1695       if (WizardMode && nm != NULL) {
  1749       if (WizardMode && nm != NULL) {
  1696         sprintf(buf + (int)strlen(buf), "(nmethod " INTPTR_FORMAT ")", (intptr_t)nm);
  1750         sprintf(buf + (int)strlen(buf), "(nmethod " INTPTR_FORMAT ")", (intptr_t)nm);
  1697       }
  1751       }
  2092 
  2146 
  2093   // Fill in method name
  2147   // Fill in method name
  2094   oop methodname = StringTable::intern(sym, CHECK_0);
  2148   oop methodname = StringTable::intern(sym, CHECK_0);
  2095   java_lang_StackTraceElement::set_methodName(element(), methodname);
  2149   java_lang_StackTraceElement::set_methodName(element(), methodname);
  2096 
  2150 
       
  2151   // Fill in module name and version
       
  2152   ModuleEntry* module = holder->module();
       
  2153   if (module->is_named()) {
       
  2154     oop module_name = StringTable::intern(module->name(), CHECK_0);
       
  2155     java_lang_StackTraceElement::set_moduleName(element(), module_name);
       
  2156     oop module_version;
       
  2157     if (module->version() != NULL) {
       
  2158       module_version = StringTable::intern(module->version(), CHECK_0);
       
  2159     } else {
       
  2160       module_version = NULL;
       
  2161     }
       
  2162     java_lang_StackTraceElement::set_moduleVersion(element(), module_version);
       
  2163   }
       
  2164 
  2097   if (!version_matches(method, version)) {
  2165   if (!version_matches(method, version)) {
  2098     // The method was redefined, accurate line number information isn't available
  2166     // The method was redefined, accurate line number information isn't available
  2099     java_lang_StackTraceElement::set_fileName(element(), NULL);
  2167     java_lang_StackTraceElement::set_fileName(element(), NULL);
  2100     java_lang_StackTraceElement::set_lineNumber(element(), -1);
  2168     java_lang_StackTraceElement::set_lineNumber(element(), -1);
  2101   } else {
  2169   } else {
  2750 void java_lang_reflect_Parameter::set_executable(oop param, oop value) {
  2818 void java_lang_reflect_Parameter::set_executable(oop param, oop value) {
  2751   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  2819   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  2752   param->obj_field_put(executable_offset, value);
  2820   param->obj_field_put(executable_offset, value);
  2753 }
  2821 }
  2754 
  2822 
       
  2823 
       
  2824 int java_lang_reflect_Module::loader_offset;
       
  2825 int java_lang_reflect_Module::name_offset;
       
  2826 int java_lang_reflect_Module::_module_entry_offset = -1;
       
  2827 
       
  2828 Handle java_lang_reflect_Module::create(Handle loader, Handle module_name, TRAPS) {
       
  2829   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
       
  2830 
       
  2831   Symbol* name = vmSymbols::java_lang_reflect_Module();
       
  2832   Klass* k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
       
  2833   instanceKlassHandle klass (THREAD, k);
       
  2834 
       
  2835   Handle jlrmh = klass->allocate_instance_handle(CHECK_NH);
       
  2836   JavaValue result(T_VOID);
       
  2837   JavaCalls::call_special(&result, jlrmh, KlassHandle(THREAD, klass()),
       
  2838                           vmSymbols::object_initializer_name(),
       
  2839                           vmSymbols::java_lang_reflect_module_init_signature(),
       
  2840                           loader, module_name, CHECK_NH);
       
  2841   return jlrmh;
       
  2842 }
       
  2843 
       
  2844 void java_lang_reflect_Module::compute_offsets() {
       
  2845   Klass* k = SystemDictionary::reflect_Module_klass();
       
  2846   if(NULL != k) {
       
  2847     compute_offset(loader_offset,  k, vmSymbols::loader_name(),  vmSymbols::classloader_signature());
       
  2848     compute_offset(name_offset,    k, vmSymbols::name_name(),    vmSymbols::string_signature());
       
  2849     MODULE_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
       
  2850   }
       
  2851 }
       
  2852 
       
  2853 
       
  2854 oop java_lang_reflect_Module::loader(oop module) {
       
  2855   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
       
  2856   return module->obj_field(loader_offset);
       
  2857 }
       
  2858 
       
  2859 void java_lang_reflect_Module::set_loader(oop module, oop value) {
       
  2860   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
       
  2861   module->obj_field_put(loader_offset, value);
       
  2862 }
       
  2863 
       
  2864 oop java_lang_reflect_Module::name(oop module) {
       
  2865   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
       
  2866   return module->obj_field(name_offset);
       
  2867 }
       
  2868 
       
  2869 void java_lang_reflect_Module::set_name(oop module, oop value) {
       
  2870   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
       
  2871   module->obj_field_put(name_offset, value);
       
  2872 }
       
  2873 
       
  2874 ModuleEntry* java_lang_reflect_Module::module_entry(oop module, TRAPS) {
       
  2875   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
       
  2876   assert(module != NULL, "module can't be null");
       
  2877   assert(module->is_oop(), "module must be oop");
       
  2878 
       
  2879   ModuleEntry* module_entry = (ModuleEntry*)module->address_field(_module_entry_offset);
       
  2880   if (module_entry == NULL) {
       
  2881     // If the inject field containing the ModuleEntry* is null then return the
       
  2882     // class loader's unnamed module.
       
  2883     oop loader = java_lang_reflect_Module::loader(module);
       
  2884     Handle h_loader = Handle(THREAD, loader);
       
  2885     ClassLoaderData* loader_cld = SystemDictionary::register_loader(h_loader, CHECK_NULL);
       
  2886     return loader_cld->modules()->unnamed_module();
       
  2887   }
       
  2888   return module_entry;
       
  2889 }
       
  2890 
       
  2891 void java_lang_reflect_Module::set_module_entry(oop module, ModuleEntry* module_entry) {
       
  2892   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
       
  2893   assert(module != NULL, "module can't be null");
       
  2894   assert(module->is_oop(), "module must be oop");
       
  2895   module->address_field_put(_module_entry_offset, (address)module_entry);
       
  2896 }
  2755 
  2897 
  2756 Handle sun_reflect_ConstantPool::create(TRAPS) {
  2898 Handle sun_reflect_ConstantPool::create(TRAPS) {
  2757   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  2899   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  2758   Klass* k = SystemDictionary::reflect_ConstantPool_klass();
  2900   Klass* k = SystemDictionary::reflect_ConstantPool_klass();
  2759   instanceKlassHandle klass (THREAD, k);
  2901   instanceKlassHandle klass (THREAD, k);
  3350 // Support for java_lang_ClassLoader
  3492 // Support for java_lang_ClassLoader
  3351 
  3493 
  3352 bool java_lang_ClassLoader::offsets_computed = false;
  3494 bool java_lang_ClassLoader::offsets_computed = false;
  3353 int  java_lang_ClassLoader::_loader_data_offset = -1;
  3495 int  java_lang_ClassLoader::_loader_data_offset = -1;
  3354 int  java_lang_ClassLoader::parallelCapable_offset = -1;
  3496 int  java_lang_ClassLoader::parallelCapable_offset = -1;
       
  3497 int  java_lang_ClassLoader::unnamedModule_offset = -1;
  3355 
  3498 
  3356 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
  3499 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
  3357     assert(loader != NULL && loader->is_oop(), "loader must be oop");
  3500     assert(loader != NULL && loader->is_oop(), "loader must be oop");
  3358     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
  3501     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
  3359 }
  3502 }
  3368 
  3511 
  3369   // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
  3512   // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
  3370   Klass* k1 = SystemDictionary::ClassLoader_klass();
  3513   Klass* k1 = SystemDictionary::ClassLoader_klass();
  3371   compute_optional_offset(parallelCapable_offset,
  3514   compute_optional_offset(parallelCapable_offset,
  3372     k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
  3515     k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
       
  3516 
       
  3517   compute_offset(unnamedModule_offset,
       
  3518     k1, vmSymbols::unnamedModule_name(), vmSymbols::module_signature());
  3373 
  3519 
  3374   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3520   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
  3375 }
  3521 }
  3376 
  3522 
  3377 oop java_lang_ClassLoader::parent(oop loader) {
  3523 oop java_lang_ClassLoader::parent(oop loader) {
  3436     }
  3582     }
  3437   }
  3583   }
  3438   return loader;
  3584   return loader;
  3439 }
  3585 }
  3440 
  3586 
       
  3587 oop java_lang_ClassLoader::unnamedModule(oop loader) {
       
  3588   assert(is_instance(loader), "loader must be oop");
       
  3589   return loader->obj_field(unnamedModule_offset);
       
  3590 }
  3441 
  3591 
  3442 // Support for java_lang_System
  3592 // Support for java_lang_System
  3443 int java_lang_System::in_offset_in_bytes() {
  3593 int java_lang_System::in_offset_in_bytes() {
  3444   return (InstanceMirrorKlass::offset_of_static_fields() + static_in_offset);
  3594   return (InstanceMirrorKlass::offset_of_static_fields() + static_in_offset);
  3445 }
  3595 }
  3468 int java_lang_Class::_klass_offset;
  3618 int java_lang_Class::_klass_offset;
  3469 int java_lang_Class::_array_klass_offset;
  3619 int java_lang_Class::_array_klass_offset;
  3470 int java_lang_Class::_oop_size_offset;
  3620 int java_lang_Class::_oop_size_offset;
  3471 int java_lang_Class::_static_oop_field_count_offset;
  3621 int java_lang_Class::_static_oop_field_count_offset;
  3472 int java_lang_Class::_class_loader_offset;
  3622 int java_lang_Class::_class_loader_offset;
       
  3623 int java_lang_Class::_module_offset;
  3473 int java_lang_Class::_protection_domain_offset;
  3624 int java_lang_Class::_protection_domain_offset;
  3474 int java_lang_Class::_component_mirror_offset;
  3625 int java_lang_Class::_component_mirror_offset;
  3475 int java_lang_Class::_init_lock_offset;
  3626 int java_lang_Class::_init_lock_offset;
  3476 int java_lang_Class::_signers_offset;
  3627 int java_lang_Class::_signers_offset;
  3477 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
  3628 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
       
  3629 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
  3478 int java_lang_Throwable::backtrace_offset;
  3630 int java_lang_Throwable::backtrace_offset;
  3479 int java_lang_Throwable::detailMessage_offset;
  3631 int java_lang_Throwable::detailMessage_offset;
  3480 int java_lang_Throwable::cause_offset;
  3632 int java_lang_Throwable::cause_offset;
  3481 int java_lang_Throwable::stackTrace_offset;
  3633 int java_lang_Throwable::stackTrace_offset;
  3482 int java_lang_Throwable::static_unassigned_stacktrace_offset;
  3634 int java_lang_Throwable::static_unassigned_stacktrace_offset;
  3532 int java_lang_System::static_security_offset;
  3684 int java_lang_System::static_security_offset;
  3533 int java_lang_StackTraceElement::declaringClass_offset;
  3685 int java_lang_StackTraceElement::declaringClass_offset;
  3534 int java_lang_StackTraceElement::methodName_offset;
  3686 int java_lang_StackTraceElement::methodName_offset;
  3535 int java_lang_StackTraceElement::fileName_offset;
  3687 int java_lang_StackTraceElement::fileName_offset;
  3536 int java_lang_StackTraceElement::lineNumber_offset;
  3688 int java_lang_StackTraceElement::lineNumber_offset;
       
  3689 int java_lang_StackTraceElement::moduleName_offset;
       
  3690 int java_lang_StackTraceElement::moduleVersion_offset;
  3537 int java_lang_StackFrameInfo::_declaringClass_offset;
  3691 int java_lang_StackFrameInfo::_declaringClass_offset;
  3538 int java_lang_StackFrameInfo::_memberName_offset;
  3692 int java_lang_StackFrameInfo::_memberName_offset;
  3539 int java_lang_StackFrameInfo::_bci_offset;
  3693 int java_lang_StackFrameInfo::_bci_offset;
  3540 int java_lang_StackFrameInfo::_methodName_offset;
  3694 int java_lang_StackFrameInfo::_methodName_offset;
  3541 int java_lang_StackFrameInfo::_fileName_offset;
  3695 int java_lang_StackFrameInfo::_fileName_offset;
  3573 
  3727 
  3574 void java_lang_StackTraceElement::set_lineNumber(oop element, int value) {
  3728 void java_lang_StackTraceElement::set_lineNumber(oop element, int value) {
  3575   element->int_field_put(lineNumber_offset, value);
  3729   element->int_field_put(lineNumber_offset, value);
  3576 }
  3730 }
  3577 
  3731 
       
  3732 void java_lang_StackTraceElement::set_moduleName(oop element, oop value) {
       
  3733   element->obj_field_put(moduleName_offset, value);
       
  3734 }
       
  3735 
       
  3736 void java_lang_StackTraceElement::set_moduleVersion(oop element, oop value) {
       
  3737   element->obj_field_put(moduleVersion_offset, value);
       
  3738 }
       
  3739 
  3578 // Support for java_lang_StackFrameInfo
  3740 // Support for java_lang_StackFrameInfo
  3579 void java_lang_StackFrameInfo::set_declaringClass(oop element, oop value) {
  3741 void java_lang_StackFrameInfo::set_declaringClass(oop element, oop value) {
  3580   element->obj_field_put(_declaringClass_offset, value);
  3742   element->obj_field_put(_declaringClass_offset, value);
  3581 }
  3743 }
  3582 
  3744 
  3711   java_lang_System::static_out_offset = java_lang_System::hc_static_out_offset * x;
  3873   java_lang_System::static_out_offset = java_lang_System::hc_static_out_offset * x;
  3712   java_lang_System::static_err_offset = java_lang_System::hc_static_err_offset * x;
  3874   java_lang_System::static_err_offset = java_lang_System::hc_static_err_offset * x;
  3713   java_lang_System::static_security_offset = java_lang_System::hc_static_security_offset * x;
  3875   java_lang_System::static_security_offset = java_lang_System::hc_static_security_offset * x;
  3714 
  3876 
  3715   // java_lang_StackTraceElement
  3877   // java_lang_StackTraceElement
       
  3878   java_lang_StackTraceElement::moduleName_offset = java_lang_StackTraceElement::hc_moduleName_offset * x + header;
       
  3879   java_lang_StackTraceElement::moduleVersion_offset = java_lang_StackTraceElement::hc_moduleVersion_offset * x + header;
  3716   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
  3880   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
  3717   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
  3881   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
  3718   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
  3882   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
  3719   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
  3883   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
  3720   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
  3884   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
  3750   java_lang_reflect_Field::compute_offsets();
  3914   java_lang_reflect_Field::compute_offsets();
  3751   java_nio_Buffer::compute_offsets();
  3915   java_nio_Buffer::compute_offsets();
  3752   sun_reflect_ConstantPool::compute_offsets();
  3916   sun_reflect_ConstantPool::compute_offsets();
  3753   sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
  3917   sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets();
  3754   java_lang_reflect_Parameter::compute_offsets();
  3918   java_lang_reflect_Parameter::compute_offsets();
       
  3919   java_lang_reflect_Module::compute_offsets();
  3755   java_lang_StackFrameInfo::compute_offsets();
  3920   java_lang_StackFrameInfo::compute_offsets();
  3756   java_lang_LiveStackFrameInfo::compute_offsets();
  3921   java_lang_LiveStackFrameInfo::compute_offsets();
  3757 
  3922 
  3758   // generated interpreter code wants to know about the offsets we just computed:
  3923   // generated interpreter code wants to know about the offsets we just computed:
  3759   AbstractAssembler::update_delayed_values();
  3924   AbstractAssembler::update_delayed_values();
  3897   CHECK_OFFSET("java/lang/Integer",   java_lang_boxing_object, value, "I");
  4062   CHECK_OFFSET("java/lang/Integer",   java_lang_boxing_object, value, "I");
  3898   CHECK_LONG_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J");
  4063   CHECK_LONG_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J");
  3899 
  4064 
  3900   // java.lang.ClassLoader
  4065   // java.lang.ClassLoader
  3901 
  4066 
  3902   CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent,      "Ljava/lang/ClassLoader;");
  4067   CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent,        "Ljava/lang/ClassLoader;");
  3903 
  4068 
  3904   // java.lang.System
  4069   // java.lang.System
  3905 
  4070 
  3906   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System,  in, "Ljava/io/InputStream;");
  4071   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System,  in, "Ljava/io/InputStream;");
  3907   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, out, "Ljava/io/PrintStream;");
  4072   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, out, "Ljava/io/PrintStream;");