< prev index next >

src/share/vm/classfile/javaClasses.cpp

Print this page




  33 #include "interpreter/interpreter.hpp"
  34 #include "memory/oopFactory.hpp"
  35 #include "memory/resourceArea.hpp"
  36 #include "memory/universe.inline.hpp"
  37 #include "oops/fieldStreams.hpp"
  38 #include "oops/instanceKlass.hpp"
  39 #include "oops/instanceMirrorKlass.hpp"
  40 #include "oops/klass.hpp"
  41 #include "oops/method.hpp"
  42 #include "oops/symbol.hpp"
  43 #include "oops/typeArrayOop.hpp"
  44 #include "prims/jvmtiRedefineClassesTrace.hpp"
  45 #include "runtime/fieldDescriptor.hpp"
  46 #include "runtime/handles.inline.hpp"
  47 #include "runtime/interfaceSupport.hpp"
  48 #include "runtime/java.hpp"
  49 #include "runtime/javaCalls.hpp"
  50 #include "runtime/safepoint.hpp"
  51 #include "runtime/thread.inline.hpp"
  52 #include "runtime/vframe.hpp"

  53 #include "utilities/preserveException.hpp"
  54 
  55 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
  56 
  57 #define INJECTED_FIELD_COMPUTE_OFFSET(klass, name, signature, may_be_java)    \
  58   klass::_##name##_offset = JavaClasses::compute_injected_offset(JavaClasses::klass##_##name##_enum);
  59 
  60 #define DECLARE_INJECTED_FIELD(klass, name, signature, may_be_java)           \
  61   { SystemDictionary::WK_KLASS_ENUM_NAME(klass), vmSymbols::VM_SYMBOL_ENUM_NAME(name##_name), vmSymbols::VM_SYMBOL_ENUM_NAME(signature), may_be_java },
  62 
  63 InjectedField JavaClasses::_injected_fields[] = {
  64   ALL_INJECTED_FIELDS(DECLARE_INJECTED_FIELD)
  65 };
  66 
  67 int JavaClasses::compute_injected_offset(InjectedFieldID id) {
  68   return _injected_fields[id].compute_offset();
  69 }
  70 
  71 
  72 InjectedField* JavaClasses::get_injected(Symbol* class_name, int* field_count) {


 936   assert(_group_offset == 0, "offsets should be initialized only once");
 937 
 938   Klass* k = SystemDictionary::Thread_klass();
 939   compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
 940   compute_offset(_group_offset,     k, vmSymbols::group_name(),     vmSymbols::threadgroup_signature());
 941   compute_offset(_contextClassLoader_offset, k, vmSymbols::contextClassLoader_name(), vmSymbols::classloader_signature());
 942   compute_offset(_inheritedAccessControlContext_offset, k, vmSymbols::inheritedAccessControlContext_name(), vmSymbols::accesscontrolcontext_signature());
 943   compute_offset(_priority_offset,  k, vmSymbols::priority_name(),  vmSymbols::int_signature());
 944   compute_offset(_daemon_offset,    k, vmSymbols::daemon_name(),    vmSymbols::bool_signature());
 945   compute_offset(_eetop_offset,     k, vmSymbols::eetop_name(),     vmSymbols::long_signature());
 946   compute_offset(_stillborn_offset, k, vmSymbols::stillborn_name(), vmSymbols::bool_signature());
 947   // The stackSize field is only present starting in 1.4, so don't go fatal.
 948   compute_optional_offset(_stackSize_offset, k, vmSymbols::stackSize_name(), vmSymbols::long_signature());
 949   // The tid and thread_status fields are only present starting in 1.5, so don't go fatal.
 950   compute_optional_offset(_tid_offset, k, vmSymbols::thread_id_name(), vmSymbols::long_signature());
 951   compute_optional_offset(_thread_status_offset, k, vmSymbols::thread_status_name(), vmSymbols::int_signature());
 952   // The parkBlocker field is only present starting in 1.6, so don't go fatal.
 953   compute_optional_offset(_park_blocker_offset, k, vmSymbols::park_blocker_name(), vmSymbols::object_signature());
 954   compute_optional_offset(_park_event_offset, k, vmSymbols::park_event_name(),
 955  vmSymbols::long_signature());










 956 }
 957 
 958 
 959 JavaThread* java_lang_Thread::thread(oop java_thread) {
 960   return (JavaThread*)java_thread->address_field(_eetop_offset);
 961 }
 962 
 963 
 964 void java_lang_Thread::set_thread(oop java_thread, JavaThread* thread) {
 965   java_thread->address_field_put(_eetop_offset, (address)thread);
 966 }
 967 
 968 
 969 oop java_lang_Thread::name(oop java_thread) {
 970   return java_thread->obj_field(_name_offset);
 971 }
 972 
 973 
 974 void java_lang_Thread::set_name(oop java_thread, oop name) {
 975   java_thread->obj_field_put(_name_offset, name);




  33 #include "interpreter/interpreter.hpp"
  34 #include "memory/oopFactory.hpp"
  35 #include "memory/resourceArea.hpp"
  36 #include "memory/universe.inline.hpp"
  37 #include "oops/fieldStreams.hpp"
  38 #include "oops/instanceKlass.hpp"
  39 #include "oops/instanceMirrorKlass.hpp"
  40 #include "oops/klass.hpp"
  41 #include "oops/method.hpp"
  42 #include "oops/symbol.hpp"
  43 #include "oops/typeArrayOop.hpp"
  44 #include "prims/jvmtiRedefineClassesTrace.hpp"
  45 #include "runtime/fieldDescriptor.hpp"
  46 #include "runtime/handles.inline.hpp"
  47 #include "runtime/interfaceSupport.hpp"
  48 #include "runtime/java.hpp"
  49 #include "runtime/javaCalls.hpp"
  50 #include "runtime/safepoint.hpp"
  51 #include "runtime/thread.inline.hpp"
  52 #include "runtime/vframe.hpp"
  53 #include "evtrace/traceEvents.hpp"
  54 #include "utilities/preserveException.hpp"
  55 
  56 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
  57 
  58 #define INJECTED_FIELD_COMPUTE_OFFSET(klass, name, signature, may_be_java)    \
  59   klass::_##name##_offset = JavaClasses::compute_injected_offset(JavaClasses::klass##_##name##_enum);
  60 
  61 #define DECLARE_INJECTED_FIELD(klass, name, signature, may_be_java)           \
  62   { SystemDictionary::WK_KLASS_ENUM_NAME(klass), vmSymbols::VM_SYMBOL_ENUM_NAME(name##_name), vmSymbols::VM_SYMBOL_ENUM_NAME(signature), may_be_java },
  63 
  64 InjectedField JavaClasses::_injected_fields[] = {
  65   ALL_INJECTED_FIELDS(DECLARE_INJECTED_FIELD)
  66 };
  67 
  68 int JavaClasses::compute_injected_offset(InjectedFieldID id) {
  69   return _injected_fields[id].compute_offset();
  70 }
  71 
  72 
  73 InjectedField* JavaClasses::get_injected(Symbol* class_name, int* field_count) {


 937   assert(_group_offset == 0, "offsets should be initialized only once");
 938 
 939   Klass* k = SystemDictionary::Thread_klass();
 940   compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
 941   compute_offset(_group_offset,     k, vmSymbols::group_name(),     vmSymbols::threadgroup_signature());
 942   compute_offset(_contextClassLoader_offset, k, vmSymbols::contextClassLoader_name(), vmSymbols::classloader_signature());
 943   compute_offset(_inheritedAccessControlContext_offset, k, vmSymbols::inheritedAccessControlContext_name(), vmSymbols::accesscontrolcontext_signature());
 944   compute_offset(_priority_offset,  k, vmSymbols::priority_name(),  vmSymbols::int_signature());
 945   compute_offset(_daemon_offset,    k, vmSymbols::daemon_name(),    vmSymbols::bool_signature());
 946   compute_offset(_eetop_offset,     k, vmSymbols::eetop_name(),     vmSymbols::long_signature());
 947   compute_offset(_stillborn_offset, k, vmSymbols::stillborn_name(), vmSymbols::bool_signature());
 948   // The stackSize field is only present starting in 1.4, so don't go fatal.
 949   compute_optional_offset(_stackSize_offset, k, vmSymbols::stackSize_name(), vmSymbols::long_signature());
 950   // The tid and thread_status fields are only present starting in 1.5, so don't go fatal.
 951   compute_optional_offset(_tid_offset, k, vmSymbols::thread_id_name(), vmSymbols::long_signature());
 952   compute_optional_offset(_thread_status_offset, k, vmSymbols::thread_status_name(), vmSymbols::int_signature());
 953   // The parkBlocker field is only present starting in 1.6, so don't go fatal.
 954   compute_optional_offset(_park_blocker_offset, k, vmSymbols::park_blocker_name(), vmSymbols::object_signature());
 955   compute_optional_offset(_park_event_offset, k, vmSymbols::park_event_name(),
 956  vmSymbols::long_signature());
 957 
 958   int park_last_global_seq_offset_offset = 0;
 959   compute_offset(park_last_global_seq_offset_offset, k, vmSymbols::park_last_global_seq_offset_name(), vmSymbols::long_signature());
 960   k->java_mirror()->long_field_put(park_last_global_seq_offset_offset, in_bytes(Thread::park_last_global_seq_offset()));
 961   int park_priority_offset_offset = 0;
 962   compute_offset(park_priority_offset_offset, k, vmSymbols::park_priority_offset_name(), vmSymbols::long_signature());
 963   k->java_mirror()->long_field_put(park_priority_offset_offset, in_bytes(Thread::park_priority_offset()));
 964   int nesting_level_offset_offset = 0;
 965   compute_offset(nesting_level_offset_offset, k, vmSymbols::nesting_level_offset_name(), vmSymbols::long_signature());
 966   k->java_mirror()->long_field_put(nesting_level_offset_offset, in_bytes(Thread::nesting_level_offset()));
 967 }
 968 
 969 
 970 JavaThread* java_lang_Thread::thread(oop java_thread) {
 971   return (JavaThread*)java_thread->address_field(_eetop_offset);
 972 }
 973 
 974 
 975 void java_lang_Thread::set_thread(oop java_thread, JavaThread* thread) {
 976   java_thread->address_field_put(_eetop_offset, (address)thread);
 977 }
 978 
 979 
 980 oop java_lang_Thread::name(oop java_thread) {
 981   return java_thread->obj_field(_name_offset);
 982 }
 983 
 984 
 985 void java_lang_Thread::set_name(oop java_thread, oop name) {
 986   java_thread->obj_field_put(_name_offset, name);


< prev index next >