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 //
|