< prev index next >

hotspot/src/share/vm/classfile/javaClasses.cpp

Print this page




2158   }
2159 
2160   Handle element = ik->allocate_instance_handle(CHECK_0);
2161 
2162   int cpref = method->name_index();
2163   int version = method->constants()->version();
2164   fill_in(element, method->method_holder(), method, version, bci, cpref, CHECK_0);
2165   return element();
2166 }
2167 
2168 void java_lang_StackTraceElement::fill_in(Handle element,
2169                                           InstanceKlass* holder, const methodHandle& method,
2170                                           int version, int bci, int cpref, TRAPS) {
2171   assert(element->is_a(SystemDictionary::StackTraceElement_klass()), "sanity check");
2172 
2173   // Fill in class name
2174   ResourceMark rm(THREAD);
2175   const char* str = holder->external_name();
2176   oop classname = StringTable::intern((char*) str, CHECK);
2177   java_lang_StackTraceElement::set_declaringClass(element(), classname);








2178 
2179   // The method can be NULL if the requested class version is gone
2180   Symbol* sym = !method.is_null() ? method->name() : holder->constants()->symbol_at(cpref);
2181 
2182   // Fill in method name
2183   oop methodname = StringTable::intern(sym, CHECK);
2184   java_lang_StackTraceElement::set_methodName(element(), methodname);
2185 
2186   // Fill in module name and version
2187   ModuleEntry* module = holder->module();
2188   if (module->is_named()) {
2189     oop module_name = StringTable::intern(module->name(), CHECK);
2190     java_lang_StackTraceElement::set_moduleName(element(), module_name);
2191     oop module_version;
2192     if (module->version() != NULL) {
2193       module_version = StringTable::intern(module->version(), CHECK);
2194     } else {
2195       module_version = NULL;
2196     }
2197     java_lang_StackTraceElement::set_moduleVersion(element(), module_version);


3416   SystemDictionary::AccessControlContext_klass()->initialize(CHECK_0);
3417   // Allocate result
3418   oop result = SystemDictionary::AccessControlContext_klass()->allocate_instance(CHECK_0);
3419   // Fill in values
3420   result->obj_field_put(_context_offset, context());
3421   result->obj_field_put(_privilegedContext_offset, privileged_context());
3422   result->bool_field_put(_isPrivileged_offset, isPrivileged);
3423   // whitelist AccessControlContexts created by the JVM if present
3424   if (_isAuthorized_offset != -1) {
3425     result->bool_field_put(_isAuthorized_offset, true);
3426   }
3427   return result;
3428 }
3429 
3430 
3431 // Support for java_lang_ClassLoader
3432 
3433 bool java_lang_ClassLoader::offsets_computed = false;
3434 int  java_lang_ClassLoader::_loader_data_offset = -1;
3435 int  java_lang_ClassLoader::parallelCapable_offset = -1;

3436 int  java_lang_ClassLoader::unnamedModule_offset = -1;
3437 
3438 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
3439     assert(loader != NULL && loader->is_oop(), "loader must be oop");
3440     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
3441 }
3442 
3443 ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
3444   return *java_lang_ClassLoader::loader_data_addr(loader);
3445 }
3446 
3447 void java_lang_ClassLoader::compute_offsets() {
3448   assert(!offsets_computed, "offsets should be initialized only once");
3449   offsets_computed = true;
3450 
3451   // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
3452   Klass* k1 = SystemDictionary::ClassLoader_klass();
3453   compute_optional_offset(parallelCapable_offset,
3454     k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
3455 



3456   compute_offset(unnamedModule_offset,
3457     k1, vmSymbols::unnamedModule_name(), vmSymbols::module_signature());
3458 
3459   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
3460 }
3461 
3462 oop java_lang_ClassLoader::parent(oop loader) {
3463   assert(is_instance(loader), "loader must be oop");
3464   return loader->obj_field(parent_offset);
3465 }
3466 





3467 bool java_lang_ClassLoader::isAncestor(oop loader, oop cl) {
3468   assert(is_instance(loader), "loader must be oop");
3469   assert(cl == NULL || is_instance(cl), "cl argument must be oop");
3470   oop acl = loader;
3471   debug_only(jint loop_count = 0);
3472   // This loop taken verbatim from ClassLoader.java:
3473   do {
3474     acl = parent(acl);
3475     if (cl == acl) {
3476       return true;
3477     }
3478     assert(++loop_count > 0, "loop_count overflow");
3479   } while (acl != NULL);
3480   return false;
3481 }
3482 
3483 bool java_lang_ClassLoader::is_instance(oop obj) {
3484   return obj != NULL && is_subclass(obj->klass());
3485 }
3486 


3602 int java_lang_reflect_Field::annotations_offset;
3603 int java_lang_reflect_Field::type_annotations_offset;
3604 int java_lang_reflect_Parameter::name_offset;
3605 int java_lang_reflect_Parameter::modifiers_offset;
3606 int java_lang_reflect_Parameter::index_offset;
3607 int java_lang_reflect_Parameter::executable_offset;
3608 int java_lang_boxing_object::value_offset;
3609 int java_lang_boxing_object::long_value_offset;
3610 int java_lang_ref_Reference::referent_offset;
3611 int java_lang_ref_Reference::queue_offset;
3612 int java_lang_ref_Reference::next_offset;
3613 int java_lang_ref_Reference::discovered_offset;
3614 int java_lang_ref_Reference::number_of_fake_oop_fields;
3615 int java_lang_ref_SoftReference::timestamp_offset;
3616 int java_lang_ref_SoftReference::static_clock_offset;
3617 int java_lang_ClassLoader::parent_offset;
3618 int java_lang_System::static_in_offset;
3619 int java_lang_System::static_out_offset;
3620 int java_lang_System::static_err_offset;
3621 int java_lang_System::static_security_offset;
3622 int java_lang_StackTraceElement::declaringClass_offset;
3623 int java_lang_StackTraceElement::methodName_offset;
3624 int java_lang_StackTraceElement::fileName_offset;
3625 int java_lang_StackTraceElement::lineNumber_offset;
3626 int java_lang_StackTraceElement::moduleName_offset;
3627 int java_lang_StackTraceElement::moduleVersion_offset;



3628 int java_lang_StackFrameInfo::_declaringClass_offset;
3629 int java_lang_StackFrameInfo::_memberName_offset;
3630 int java_lang_StackFrameInfo::_bci_offset;
3631 int java_lang_StackFrameInfo::_version_offset;
3632 int java_lang_LiveStackFrameInfo::_monitors_offset;
3633 int java_lang_LiveStackFrameInfo::_locals_offset;
3634 int java_lang_LiveStackFrameInfo::_operands_offset;
3635 int java_lang_AssertionStatusDirectives::classes_offset;
3636 int java_lang_AssertionStatusDirectives::classEnabled_offset;
3637 int java_lang_AssertionStatusDirectives::packages_offset;
3638 int java_lang_AssertionStatusDirectives::packageEnabled_offset;
3639 int java_lang_AssertionStatusDirectives::deflt_offset;
3640 int java_nio_Buffer::_limit_offset;
3641 int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset = 0;
3642 int reflect_ConstantPool::_oop_offset;
3643 int reflect_UnsafeStaticFieldAccessorImpl::_base_offset;
3644 
3645 
3646 // Support for java_lang_StackTraceElement
3647 


3652 void java_lang_StackTraceElement::set_declaringClass(oop element, oop value) {
3653   element->obj_field_put(declaringClass_offset, value);
3654 }
3655 
3656 void java_lang_StackTraceElement::set_methodName(oop element, oop value) {
3657   element->obj_field_put(methodName_offset, value);
3658 }
3659 
3660 void java_lang_StackTraceElement::set_lineNumber(oop element, int value) {
3661   element->int_field_put(lineNumber_offset, value);
3662 }
3663 
3664 void java_lang_StackTraceElement::set_moduleName(oop element, oop value) {
3665   element->obj_field_put(moduleName_offset, value);
3666 }
3667 
3668 void java_lang_StackTraceElement::set_moduleVersion(oop element, oop value) {
3669   element->obj_field_put(moduleVersion_offset, value);
3670 }
3671 








3672 // Support for java_lang_StackFrameInfo
3673 void java_lang_StackFrameInfo::set_declaringClass(oop element, oop value) {
3674   element->obj_field_put(_declaringClass_offset, value);
3675 }
3676 
3677 void java_lang_StackFrameInfo::set_version(oop element, short value) {
3678   element->short_field_put(_version_offset, value);
3679 }
3680 
3681 void java_lang_StackFrameInfo::set_bci(oop element, int value) {
3682   element->int_field_put(_bci_offset, value);
3683 }
3684 
3685 void java_lang_LiveStackFrameInfo::set_monitors(oop element, oop value) {
3686   element->obj_field_put(_monitors_offset, value);
3687 }
3688 
3689 void java_lang_LiveStackFrameInfo::set_locals(oop element, oop value) {
3690   element->obj_field_put(_locals_offset, value);
3691 }


3767   java_lang_ref_Reference::discovered_offset  = java_lang_ref_Reference::hc_discovered_offset * x + header;
3768   // Artificial fields for java_lang_ref_Reference
3769   // The first field is for the discovered field added in 1.4
3770   java_lang_ref_Reference::number_of_fake_oop_fields = 1;
3771 
3772   // java_lang_ref_SoftReference Class
3773   java_lang_ref_SoftReference::timestamp_offset = align_size_up((java_lang_ref_SoftReference::hc_timestamp_offset * x + header), BytesPerLong);
3774   // Don't multiply static fields because they are always in wordSize units
3775   java_lang_ref_SoftReference::static_clock_offset = java_lang_ref_SoftReference::hc_static_clock_offset * x;
3776 
3777   // java_lang_ClassLoader
3778   java_lang_ClassLoader::parent_offset = java_lang_ClassLoader::hc_parent_offset * x + header;
3779 
3780   // java_lang_System
3781   java_lang_System::static_in_offset  = java_lang_System::hc_static_in_offset  * x;
3782   java_lang_System::static_out_offset = java_lang_System::hc_static_out_offset * x;
3783   java_lang_System::static_err_offset = java_lang_System::hc_static_err_offset * x;
3784   java_lang_System::static_security_offset = java_lang_System::hc_static_security_offset * x;
3785 
3786   // java_lang_StackTraceElement


3787   java_lang_StackTraceElement::moduleName_offset = java_lang_StackTraceElement::hc_moduleName_offset * x + header;
3788   java_lang_StackTraceElement::moduleVersion_offset = java_lang_StackTraceElement::hc_moduleVersion_offset * x + header;
3789   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
3790   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
3791   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
3792   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
3793   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
3794   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
3795   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
3796   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
3797   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3798 
3799 }
3800 
3801 
3802 // Compute non-hard-coded field offsets of all the classes in this file
3803 void JavaClasses::compute_offsets() {
3804   // java_lang_Class::compute_offsets was called earlier in bootstrap
3805   java_lang_ClassLoader::compute_offsets();
3806   java_lang_Throwable::compute_offsets();


3968   CHECK_OFFSET("java/lang/Float",     java_lang_boxing_object, value, "F");
3969   CHECK_LONG_OFFSET("java/lang/Double", java_lang_boxing_object, value, "D");
3970   CHECK_OFFSET("java/lang/Byte",      java_lang_boxing_object, value, "B");
3971   CHECK_OFFSET("java/lang/Short",     java_lang_boxing_object, value, "S");
3972   CHECK_OFFSET("java/lang/Integer",   java_lang_boxing_object, value, "I");
3973   CHECK_LONG_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J");
3974 
3975   // java.lang.ClassLoader
3976 
3977   CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent,        "Ljava/lang/ClassLoader;");
3978 
3979   // java.lang.System
3980 
3981   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System,  in, "Ljava/io/InputStream;");
3982   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, out, "Ljava/io/PrintStream;");
3983   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, err, "Ljava/io/PrintStream;");
3984   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, security, "Ljava/lang/SecurityManager;");
3985 
3986   // java.lang.StackTraceElement
3987 




3988   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, declaringClass, "Ljava/lang/String;");
3989   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, methodName, "Ljava/lang/String;");
3990   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement,   fileName, "Ljava/lang/String;");
3991   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, lineNumber, "I");
3992 
3993   // java.lang.ref.Reference
3994 
3995   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, referent, "Ljava/lang/Object;");
3996   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, queue, "Ljava/lang/ref/ReferenceQueue;");
3997   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, next, "Ljava/lang/ref/Reference;");
3998   // Fake field
3999   //CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, discovered, "Ljava/lang/ref/Reference;");
4000 
4001   // java.lang.ref.SoftReference
4002 
4003   CHECK_OFFSET("java/lang/ref/SoftReference", java_lang_ref_SoftReference, timestamp, "J");
4004   CHECK_STATIC_OFFSET("java/lang/ref/SoftReference", java_lang_ref_SoftReference, clock, "J");
4005 
4006   // java.lang.AssertionStatusDirectives
4007   //




2158   }
2159 
2160   Handle element = ik->allocate_instance_handle(CHECK_0);
2161 
2162   int cpref = method->name_index();
2163   int version = method->constants()->version();
2164   fill_in(element, method->method_holder(), method, version, bci, cpref, CHECK_0);
2165   return element();
2166 }
2167 
2168 void java_lang_StackTraceElement::fill_in(Handle element,
2169                                           InstanceKlass* holder, const methodHandle& method,
2170                                           int version, int bci, int cpref, TRAPS) {
2171   assert(element->is_a(SystemDictionary::StackTraceElement_klass()), "sanity check");
2172 
2173   // Fill in class name
2174   ResourceMark rm(THREAD);
2175   const char* str = holder->external_name();
2176   oop classname = StringTable::intern((char*) str, CHECK);
2177   java_lang_StackTraceElement::set_declaringClass(element(), classname);
2178   java_lang_StackTraceElement::set_declaringClassObject(element(), holder->java_mirror());
2179 
2180   oop loader = holder->class_loader();
2181   if (loader != NULL) {
2182     oop loader_name = java_lang_ClassLoader::name(loader);
2183     if (loader_name != NULL)
2184       java_lang_StackTraceElement::set_classLoaderName(element(), loader_name);
2185   }
2186 
2187   // The method can be NULL if the requested class version is gone
2188   Symbol* sym = !method.is_null() ? method->name() : holder->constants()->symbol_at(cpref);
2189 
2190   // Fill in method name
2191   oop methodname = StringTable::intern(sym, CHECK);
2192   java_lang_StackTraceElement::set_methodName(element(), methodname);
2193 
2194   // Fill in module name and version
2195   ModuleEntry* module = holder->module();
2196   if (module->is_named()) {
2197     oop module_name = StringTable::intern(module->name(), CHECK);
2198     java_lang_StackTraceElement::set_moduleName(element(), module_name);
2199     oop module_version;
2200     if (module->version() != NULL) {
2201       module_version = StringTable::intern(module->version(), CHECK);
2202     } else {
2203       module_version = NULL;
2204     }
2205     java_lang_StackTraceElement::set_moduleVersion(element(), module_version);


3424   SystemDictionary::AccessControlContext_klass()->initialize(CHECK_0);
3425   // Allocate result
3426   oop result = SystemDictionary::AccessControlContext_klass()->allocate_instance(CHECK_0);
3427   // Fill in values
3428   result->obj_field_put(_context_offset, context());
3429   result->obj_field_put(_privilegedContext_offset, privileged_context());
3430   result->bool_field_put(_isPrivileged_offset, isPrivileged);
3431   // whitelist AccessControlContexts created by the JVM if present
3432   if (_isAuthorized_offset != -1) {
3433     result->bool_field_put(_isAuthorized_offset, true);
3434   }
3435   return result;
3436 }
3437 
3438 
3439 // Support for java_lang_ClassLoader
3440 
3441 bool java_lang_ClassLoader::offsets_computed = false;
3442 int  java_lang_ClassLoader::_loader_data_offset = -1;
3443 int  java_lang_ClassLoader::parallelCapable_offset = -1;
3444 int  java_lang_ClassLoader::name_offset = -1;
3445 int  java_lang_ClassLoader::unnamedModule_offset = -1;
3446 
3447 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
3448     assert(loader != NULL && loader->is_oop(), "loader must be oop");
3449     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
3450 }
3451 
3452 ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
3453   return *java_lang_ClassLoader::loader_data_addr(loader);
3454 }
3455 
3456 void java_lang_ClassLoader::compute_offsets() {
3457   assert(!offsets_computed, "offsets should be initialized only once");
3458   offsets_computed = true;
3459 
3460   // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
3461   Klass* k1 = SystemDictionary::ClassLoader_klass();
3462   compute_optional_offset(parallelCapable_offset,
3463     k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
3464 
3465   compute_offset(name_offset,
3466     k1, vmSymbols::name_name(), vmSymbols::string_signature());
3467 
3468   compute_offset(unnamedModule_offset,
3469     k1, vmSymbols::unnamedModule_name(), vmSymbols::module_signature());
3470 
3471   CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
3472 }
3473 
3474 oop java_lang_ClassLoader::parent(oop loader) {
3475   assert(is_instance(loader), "loader must be oop");
3476   return loader->obj_field(parent_offset);
3477 }
3478 
3479 oop java_lang_ClassLoader::name(oop loader) {
3480   assert(is_instance(loader), "loader must be oop");
3481   return loader->obj_field(name_offset);
3482 }
3483 
3484 bool java_lang_ClassLoader::isAncestor(oop loader, oop cl) {
3485   assert(is_instance(loader), "loader must be oop");
3486   assert(cl == NULL || is_instance(cl), "cl argument must be oop");
3487   oop acl = loader;
3488   debug_only(jint loop_count = 0);
3489   // This loop taken verbatim from ClassLoader.java:
3490   do {
3491     acl = parent(acl);
3492     if (cl == acl) {
3493       return true;
3494     }
3495     assert(++loop_count > 0, "loop_count overflow");
3496   } while (acl != NULL);
3497   return false;
3498 }
3499 
3500 bool java_lang_ClassLoader::is_instance(oop obj) {
3501   return obj != NULL && is_subclass(obj->klass());
3502 }
3503 


3619 int java_lang_reflect_Field::annotations_offset;
3620 int java_lang_reflect_Field::type_annotations_offset;
3621 int java_lang_reflect_Parameter::name_offset;
3622 int java_lang_reflect_Parameter::modifiers_offset;
3623 int java_lang_reflect_Parameter::index_offset;
3624 int java_lang_reflect_Parameter::executable_offset;
3625 int java_lang_boxing_object::value_offset;
3626 int java_lang_boxing_object::long_value_offset;
3627 int java_lang_ref_Reference::referent_offset;
3628 int java_lang_ref_Reference::queue_offset;
3629 int java_lang_ref_Reference::next_offset;
3630 int java_lang_ref_Reference::discovered_offset;
3631 int java_lang_ref_Reference::number_of_fake_oop_fields;
3632 int java_lang_ref_SoftReference::timestamp_offset;
3633 int java_lang_ref_SoftReference::static_clock_offset;
3634 int java_lang_ClassLoader::parent_offset;
3635 int java_lang_System::static_in_offset;
3636 int java_lang_System::static_out_offset;
3637 int java_lang_System::static_err_offset;
3638 int java_lang_System::static_security_offset;

3639 int java_lang_StackTraceElement::methodName_offset;
3640 int java_lang_StackTraceElement::fileName_offset;
3641 int java_lang_StackTraceElement::lineNumber_offset;
3642 int java_lang_StackTraceElement::moduleName_offset;
3643 int java_lang_StackTraceElement::moduleVersion_offset;
3644 int java_lang_StackTraceElement::classLoaderName_offset;
3645 int java_lang_StackTraceElement::declaringClass_offset;
3646 int java_lang_StackTraceElement::classOrLoaderModuleClassName_offset;
3647 int java_lang_StackFrameInfo::_declaringClass_offset;
3648 int java_lang_StackFrameInfo::_memberName_offset;
3649 int java_lang_StackFrameInfo::_bci_offset;
3650 int java_lang_StackFrameInfo::_version_offset;
3651 int java_lang_LiveStackFrameInfo::_monitors_offset;
3652 int java_lang_LiveStackFrameInfo::_locals_offset;
3653 int java_lang_LiveStackFrameInfo::_operands_offset;
3654 int java_lang_AssertionStatusDirectives::classes_offset;
3655 int java_lang_AssertionStatusDirectives::classEnabled_offset;
3656 int java_lang_AssertionStatusDirectives::packages_offset;
3657 int java_lang_AssertionStatusDirectives::packageEnabled_offset;
3658 int java_lang_AssertionStatusDirectives::deflt_offset;
3659 int java_nio_Buffer::_limit_offset;
3660 int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset = 0;
3661 int reflect_ConstantPool::_oop_offset;
3662 int reflect_UnsafeStaticFieldAccessorImpl::_base_offset;
3663 
3664 
3665 // Support for java_lang_StackTraceElement
3666 


3671 void java_lang_StackTraceElement::set_declaringClass(oop element, oop value) {
3672   element->obj_field_put(declaringClass_offset, value);
3673 }
3674 
3675 void java_lang_StackTraceElement::set_methodName(oop element, oop value) {
3676   element->obj_field_put(methodName_offset, value);
3677 }
3678 
3679 void java_lang_StackTraceElement::set_lineNumber(oop element, int value) {
3680   element->int_field_put(lineNumber_offset, value);
3681 }
3682 
3683 void java_lang_StackTraceElement::set_moduleName(oop element, oop value) {
3684   element->obj_field_put(moduleName_offset, value);
3685 }
3686 
3687 void java_lang_StackTraceElement::set_moduleVersion(oop element, oop value) {
3688   element->obj_field_put(moduleVersion_offset, value);
3689 }
3690 
3691 void java_lang_StackTraceElement::set_classLoaderName(oop element, oop value) {
3692   element->obj_field_put(classLoaderName_offset, value);
3693 }
3694 
3695 void java_lang_StackTraceElement::set_declaringClassObject(oop element, oop value) {
3696   element->obj_field_put(classOrLoaderModuleClassName_offset, value);
3697 }
3698 
3699 // Support for java_lang_StackFrameInfo
3700 void java_lang_StackFrameInfo::set_declaringClass(oop element, oop value) {
3701   element->obj_field_put(_declaringClass_offset, value);
3702 }
3703 
3704 void java_lang_StackFrameInfo::set_version(oop element, short value) {
3705   element->short_field_put(_version_offset, value);
3706 }
3707 
3708 void java_lang_StackFrameInfo::set_bci(oop element, int value) {
3709   element->int_field_put(_bci_offset, value);
3710 }
3711 
3712 void java_lang_LiveStackFrameInfo::set_monitors(oop element, oop value) {
3713   element->obj_field_put(_monitors_offset, value);
3714 }
3715 
3716 void java_lang_LiveStackFrameInfo::set_locals(oop element, oop value) {
3717   element->obj_field_put(_locals_offset, value);
3718 }


3794   java_lang_ref_Reference::discovered_offset  = java_lang_ref_Reference::hc_discovered_offset * x + header;
3795   // Artificial fields for java_lang_ref_Reference
3796   // The first field is for the discovered field added in 1.4
3797   java_lang_ref_Reference::number_of_fake_oop_fields = 1;
3798 
3799   // java_lang_ref_SoftReference Class
3800   java_lang_ref_SoftReference::timestamp_offset = align_size_up((java_lang_ref_SoftReference::hc_timestamp_offset * x + header), BytesPerLong);
3801   // Don't multiply static fields because they are always in wordSize units
3802   java_lang_ref_SoftReference::static_clock_offset = java_lang_ref_SoftReference::hc_static_clock_offset * x;
3803 
3804   // java_lang_ClassLoader
3805   java_lang_ClassLoader::parent_offset = java_lang_ClassLoader::hc_parent_offset * x + header;
3806 
3807   // java_lang_System
3808   java_lang_System::static_in_offset  = java_lang_System::hc_static_in_offset  * x;
3809   java_lang_System::static_out_offset = java_lang_System::hc_static_out_offset * x;
3810   java_lang_System::static_err_offset = java_lang_System::hc_static_err_offset * x;
3811   java_lang_System::static_security_offset = java_lang_System::hc_static_security_offset * x;
3812 
3813   // java_lang_StackTraceElement
3814   java_lang_StackTraceElement::classOrLoaderModuleClassName_offset= java_lang_StackTraceElement::hc_classOrLoaderModuleClassName_offset* x + header;
3815   java_lang_StackTraceElement::classLoaderName_offset = java_lang_StackTraceElement::hc_classLoaderName_offset * x + header;
3816   java_lang_StackTraceElement::moduleName_offset = java_lang_StackTraceElement::hc_moduleName_offset * x + header;
3817   java_lang_StackTraceElement::moduleVersion_offset = java_lang_StackTraceElement::hc_moduleVersion_offset * x + header;
3818   java_lang_StackTraceElement::declaringClass_offset = java_lang_StackTraceElement::hc_declaringClass_offset  * x + header;
3819   java_lang_StackTraceElement::methodName_offset = java_lang_StackTraceElement::hc_methodName_offset * x + header;
3820   java_lang_StackTraceElement::fileName_offset   = java_lang_StackTraceElement::hc_fileName_offset   * x + header;
3821   java_lang_StackTraceElement::lineNumber_offset = java_lang_StackTraceElement::hc_lineNumber_offset * x + header;
3822   java_lang_AssertionStatusDirectives::classes_offset = java_lang_AssertionStatusDirectives::hc_classes_offset * x + header;
3823   java_lang_AssertionStatusDirectives::classEnabled_offset = java_lang_AssertionStatusDirectives::hc_classEnabled_offset * x + header;
3824   java_lang_AssertionStatusDirectives::packages_offset = java_lang_AssertionStatusDirectives::hc_packages_offset * x + header;
3825   java_lang_AssertionStatusDirectives::packageEnabled_offset = java_lang_AssertionStatusDirectives::hc_packageEnabled_offset * x + header;
3826   java_lang_AssertionStatusDirectives::deflt_offset = java_lang_AssertionStatusDirectives::hc_deflt_offset * x + header;
3827 
3828 }
3829 
3830 
3831 // Compute non-hard-coded field offsets of all the classes in this file
3832 void JavaClasses::compute_offsets() {
3833   // java_lang_Class::compute_offsets was called earlier in bootstrap
3834   java_lang_ClassLoader::compute_offsets();
3835   java_lang_Throwable::compute_offsets();


3997   CHECK_OFFSET("java/lang/Float",     java_lang_boxing_object, value, "F");
3998   CHECK_LONG_OFFSET("java/lang/Double", java_lang_boxing_object, value, "D");
3999   CHECK_OFFSET("java/lang/Byte",      java_lang_boxing_object, value, "B");
4000   CHECK_OFFSET("java/lang/Short",     java_lang_boxing_object, value, "S");
4001   CHECK_OFFSET("java/lang/Integer",   java_lang_boxing_object, value, "I");
4002   CHECK_LONG_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J");
4003 
4004   // java.lang.ClassLoader
4005 
4006   CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent,        "Ljava/lang/ClassLoader;");
4007 
4008   // java.lang.System
4009 
4010   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System,  in, "Ljava/io/InputStream;");
4011   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, out, "Ljava/io/PrintStream;");
4012   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, err, "Ljava/io/PrintStream;");
4013   CHECK_STATIC_OFFSET("java/lang/System", java_lang_System, security, "Ljava/lang/SecurityManager;");
4014 
4015   // java.lang.StackTraceElement
4016 
4017   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, classOrLoaderModuleClassName, "Ljava/lang/Object;");
4018   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, classLoaderName, "Ljava/lang/String;");
4019   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, moduleName,      "Ljava/lang/String;");
4020   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, moduleVersion,   "Ljava/lang/String;");
4021   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, declaringClass,  "Ljava/lang/String;");
4022   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, methodName,      "Ljava/lang/String;");
4023   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, fileName,        "Ljava/lang/String;");
4024   CHECK_OFFSET("java/lang/StackTraceElement", java_lang_StackTraceElement, lineNumber,      "I");
4025 
4026   // java.lang.ref.Reference
4027 
4028   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, referent, "Ljava/lang/Object;");
4029   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, queue, "Ljava/lang/ref/ReferenceQueue;");
4030   CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, next, "Ljava/lang/ref/Reference;");
4031   // Fake field
4032   //CHECK_OFFSET("java/lang/ref/Reference", java_lang_ref_Reference, discovered, "Ljava/lang/ref/Reference;");
4033 
4034   // java.lang.ref.SoftReference
4035 
4036   CHECK_OFFSET("java/lang/ref/SoftReference", java_lang_ref_SoftReference, timestamp, "J");
4037   CHECK_STATIC_OFFSET("java/lang/ref/SoftReference", java_lang_ref_SoftReference, clock, "J");
4038 
4039   // java.lang.AssertionStatusDirectives
4040   //


< prev index next >