hotspot/src/share/vm/runtime/vmStructs.cpp
changeset 8076 96d498ec7ae1
parent 7890 7d1d76674e2e
child 8315 1503f9d7681f
child 8107 78e5bd944384
equal deleted inserted replaced
8075:582dd25571b2 8076:96d498ec7ae1
    81 #include "oops/methodOop.hpp"
    81 #include "oops/methodOop.hpp"
    82 #include "oops/objArrayKlass.hpp"
    82 #include "oops/objArrayKlass.hpp"
    83 #include "oops/objArrayKlassKlass.hpp"
    83 #include "oops/objArrayKlassKlass.hpp"
    84 #include "oops/objArrayOop.hpp"
    84 #include "oops/objArrayOop.hpp"
    85 #include "oops/oop.inline.hpp"
    85 #include "oops/oop.inline.hpp"
    86 #include "oops/symbolKlass.hpp"
    86 #include "oops/symbol.hpp"
    87 #include "oops/symbolOop.hpp"
       
    88 #include "oops/typeArrayKlass.hpp"
    87 #include "oops/typeArrayKlass.hpp"
    89 #include "oops/typeArrayKlassKlass.hpp"
    88 #include "oops/typeArrayKlassKlass.hpp"
    90 #include "oops/typeArrayOop.hpp"
    89 #include "oops/typeArrayOop.hpp"
    91 #include "prims/jvmtiAgentThread.hpp"
    90 #include "prims/jvmtiAgentThread.hpp"
    92 #include "runtime/arguments.hpp"
    91 #include "runtime/arguments.hpp"
   244   nonstatic_field(instanceKlass,               _fields,                                       typeArrayOop)                          \
   243   nonstatic_field(instanceKlass,               _fields,                                       typeArrayOop)                          \
   245   nonstatic_field(instanceKlass,               _constants,                                    constantPoolOop)                       \
   244   nonstatic_field(instanceKlass,               _constants,                                    constantPoolOop)                       \
   246   nonstatic_field(instanceKlass,               _class_loader,                                 oop)                                   \
   245   nonstatic_field(instanceKlass,               _class_loader,                                 oop)                                   \
   247   nonstatic_field(instanceKlass,               _protection_domain,                            oop)                                   \
   246   nonstatic_field(instanceKlass,               _protection_domain,                            oop)                                   \
   248   nonstatic_field(instanceKlass,               _signers,                                      objArrayOop)                           \
   247   nonstatic_field(instanceKlass,               _signers,                                      objArrayOop)                           \
   249   nonstatic_field(instanceKlass,               _source_file_name,                             symbolOop)                             \
   248   nonstatic_field(instanceKlass,               _source_file_name,                             Symbol*)                               \
   250   nonstatic_field(instanceKlass,               _source_debug_extension,                       symbolOop)                             \
   249   nonstatic_field(instanceKlass,               _source_debug_extension,                       Symbol*)                               \
   251   nonstatic_field(instanceKlass,               _inner_classes,                                typeArrayOop)                          \
   250   nonstatic_field(instanceKlass,               _inner_classes,                                typeArrayOop)                          \
   252   nonstatic_field(instanceKlass,               _nonstatic_field_size,                         int)                                   \
   251   nonstatic_field(instanceKlass,               _nonstatic_field_size,                         int)                                   \
   253   nonstatic_field(instanceKlass,               _static_field_size,                            int)                                   \
   252   nonstatic_field(instanceKlass,               _static_field_size,                            int)                                   \
   254   nonstatic_field(instanceKlass,               _static_oop_field_size,                        int)                                   \
   253   nonstatic_field(instanceKlass,               _static_oop_field_size,                        int)                                   \
   255   nonstatic_field(instanceKlass,               _nonstatic_oop_map_size,                       int)                                   \
   254   nonstatic_field(instanceKlass,               _nonstatic_oop_map_size,                       int)                                   \
   263   nonstatic_field(instanceKlass,               _reference_type,                               ReferenceType)                         \
   262   nonstatic_field(instanceKlass,               _reference_type,                               ReferenceType)                         \
   264   volatile_nonstatic_field(instanceKlass,      _oop_map_cache,                                OopMapCache*)                          \
   263   volatile_nonstatic_field(instanceKlass,      _oop_map_cache,                                OopMapCache*)                          \
   265   nonstatic_field(instanceKlass,               _jni_ids,                                      JNIid*)                                \
   264   nonstatic_field(instanceKlass,               _jni_ids,                                      JNIid*)                                \
   266   nonstatic_field(instanceKlass,               _osr_nmethods_head,                            nmethod*)                              \
   265   nonstatic_field(instanceKlass,               _osr_nmethods_head,                            nmethod*)                              \
   267   nonstatic_field(instanceKlass,               _breakpoints,                                  BreakpointInfo*)                       \
   266   nonstatic_field(instanceKlass,               _breakpoints,                                  BreakpointInfo*)                       \
   268   nonstatic_field(instanceKlass,               _generic_signature,                            symbolOop)                             \
   267   nonstatic_field(instanceKlass,               _generic_signature,                            Symbol*)                               \
   269   nonstatic_field(instanceKlass,               _methods_jmethod_ids,                          jmethodID*)                            \
   268   nonstatic_field(instanceKlass,               _methods_jmethod_ids,                          jmethodID*)                            \
   270   nonstatic_field(instanceKlass,               _methods_cached_itable_indices,                int*)                                  \
   269   nonstatic_field(instanceKlass,               _methods_cached_itable_indices,                int*)                                  \
   271   volatile_nonstatic_field(instanceKlass,      _idnum_allocated_count,                        u2)                                    \
   270   volatile_nonstatic_field(instanceKlass,      _idnum_allocated_count,                        u2)                                    \
   272   nonstatic_field(instanceKlass,               _class_annotations,                            typeArrayOop)                          \
   271   nonstatic_field(instanceKlass,               _class_annotations,                            typeArrayOop)                          \
   273   nonstatic_field(instanceKlass,               _fields_annotations,                           objArrayOop)                           \
   272   nonstatic_field(instanceKlass,               _fields_annotations,                           objArrayOop)                           \
   280   nonstatic_field(Klass,                       _primary_supers[0],                            klassOop)                              \
   279   nonstatic_field(Klass,                       _primary_supers[0],                            klassOop)                              \
   281   nonstatic_field(Klass,                       _java_mirror,                                  oop)                                   \
   280   nonstatic_field(Klass,                       _java_mirror,                                  oop)                                   \
   282   nonstatic_field(Klass,                       _modifier_flags,                               jint)                                  \
   281   nonstatic_field(Klass,                       _modifier_flags,                               jint)                                  \
   283   nonstatic_field(Klass,                       _super,                                        klassOop)                              \
   282   nonstatic_field(Klass,                       _super,                                        klassOop)                              \
   284   nonstatic_field(Klass,                       _layout_helper,                                jint)                                  \
   283   nonstatic_field(Klass,                       _layout_helper,                                jint)                                  \
   285   nonstatic_field(Klass,                       _name,                                         symbolOop)                             \
   284   nonstatic_field(Klass,                       _name,                                         Symbol*)                               \
   286   nonstatic_field(Klass,                       _access_flags,                                 AccessFlags)                           \
   285   nonstatic_field(Klass,                       _access_flags,                                 AccessFlags)                           \
   287   nonstatic_field(Klass,                       _subklass,                                     klassOop)                              \
   286   nonstatic_field(Klass,                       _subklass,                                     klassOop)                              \
   288   nonstatic_field(Klass,                       _next_sibling,                                 klassOop)                              \
   287   nonstatic_field(Klass,                       _next_sibling,                                 klassOop)                              \
   289   nonproduct_nonstatic_field(Klass,            _verify_count,                                 int)                                   \
   288   nonproduct_nonstatic_field(Klass,            _verify_count,                                 int)                                   \
   290   nonstatic_field(Klass,                       _alloc_count,                                  juint)                                 \
   289   nonstatic_field(Klass,                       _alloc_count,                                  juint)                                 \
   324   nonstatic_field(constMethodOopDesc,          _signature_index,                              u2)                                    \
   323   nonstatic_field(constMethodOopDesc,          _signature_index,                              u2)                                    \
   325   nonstatic_field(constMethodOopDesc,          _method_idnum,                                 u2)                                    \
   324   nonstatic_field(constMethodOopDesc,          _method_idnum,                                 u2)                                    \
   326   nonstatic_field(constMethodOopDesc,          _generic_signature_index,                      u2)                                    \
   325   nonstatic_field(constMethodOopDesc,          _generic_signature_index,                      u2)                                    \
   327   nonstatic_field(objArrayKlass,               _element_klass,                                klassOop)                              \
   326   nonstatic_field(objArrayKlass,               _element_klass,                                klassOop)                              \
   328   nonstatic_field(objArrayKlass,               _bottom_klass,                                 klassOop)                              \
   327   nonstatic_field(objArrayKlass,               _bottom_klass,                                 klassOop)                              \
   329   nonstatic_field(symbolKlass,                 _alloc_size,                                   juint)                                 \
   328   volatile_nonstatic_field(Symbol,             _refcount,                                     int)                                   \
   330   nonstatic_field(symbolOopDesc,               _length,                                       unsigned short)                        \
   329   nonstatic_field(Symbol,                      _identity_hash,                                int)                                   \
   331   unchecked_nonstatic_field(symbolOopDesc,     _body,                                         sizeof(jbyte)) /* NOTE: no type */     \
   330   nonstatic_field(Symbol,                      _length,                                       unsigned short)                        \
       
   331   unchecked_nonstatic_field(Symbol,            _body,                                         sizeof(jbyte)) /* NOTE: no type */     \
   332   nonstatic_field(typeArrayKlass,              _max_length,                                   int)                                   \
   332   nonstatic_field(typeArrayKlass,              _max_length,                                   int)                                   \
   333                                                                                                                                      \
   333                                                                                                                                      \
   334   /***********************/                                                                                                          \
   334   /***********************/                                                                                                          \
   335   /* Constant Pool Cache */                                                                                                          \
   335   /* Constant Pool Cache */                                                                                                          \
   336   /***********************/                                                                                                          \
   336   /***********************/                                                                                                          \
   373      static_field(Universe,                    _intArrayKlassObj,                             klassOop)                              \
   373      static_field(Universe,                    _intArrayKlassObj,                             klassOop)                              \
   374      static_field(Universe,                    _shortArrayKlassObj,                           klassOop)                              \
   374      static_field(Universe,                    _shortArrayKlassObj,                           klassOop)                              \
   375      static_field(Universe,                    _longArrayKlassObj,                            klassOop)                              \
   375      static_field(Universe,                    _longArrayKlassObj,                            klassOop)                              \
   376      static_field(Universe,                    _singleArrayKlassObj,                          klassOop)                              \
   376      static_field(Universe,                    _singleArrayKlassObj,                          klassOop)                              \
   377      static_field(Universe,                    _doubleArrayKlassObj,                          klassOop)                              \
   377      static_field(Universe,                    _doubleArrayKlassObj,                          klassOop)                              \
   378      static_field(Universe,                    _symbolKlassObj,                               klassOop)                              \
       
   379      static_field(Universe,                    _methodKlassObj,                               klassOop)                              \
   378      static_field(Universe,                    _methodKlassObj,                               klassOop)                              \
   380      static_field(Universe,                    _constMethodKlassObj,                          klassOop)                              \
   379      static_field(Universe,                    _constMethodKlassObj,                          klassOop)                              \
   381      static_field(Universe,                    _methodDataKlassObj,                           klassOop)                              \
   380      static_field(Universe,                    _methodDataKlassObj,                           klassOop)                              \
   382      static_field(Universe,                    _klassKlassObj,                                klassOop)                              \
   381      static_field(Universe,                    _klassKlassObj,                                klassOop)                              \
   383      static_field(Universe,                    _arrayKlassKlassObj,                           klassOop)                              \
   382      static_field(Universe,                    _arrayKlassKlassObj,                           klassOop)                              \
   646   /* HashtableEntry */                                                                                                               \
   645   /* HashtableEntry */                                                                                                               \
   647   /******************/                                                                                                               \
   646   /******************/                                                                                                               \
   648                                                                                                                                      \
   647                                                                                                                                      \
   649   nonstatic_field(BasicHashtableEntry,         _next,                                         BasicHashtableEntry*)                  \
   648   nonstatic_field(BasicHashtableEntry,         _next,                                         BasicHashtableEntry*)                  \
   650   nonstatic_field(BasicHashtableEntry,         _hash,                                         unsigned int)                          \
   649   nonstatic_field(BasicHashtableEntry,         _hash,                                         unsigned int)                          \
   651   nonstatic_field(HashtableEntry,              _literal,                                      oop)                                   \
   650   nonstatic_field(HashtableEntry<intptr_t>,    _literal,                                      intptr_t) \
   652                                                                                                                                      \
   651                                                                                                                                      \
   653   /*************/                                                                                                                    \
   652   /*************/                                                                                                                    \
   654   /* Hashtable */                                                                                                                    \
   653   /* Hashtable */                                                                                                                    \
   655   /*************/                                                                                                                    \
   654   /*************/                                                                                                                    \
   656                                                                                                                                      \
   655                                                                                                                                      \
   681                                                                                                                                      \
   680                                                                                                                                      \
   682   /*************************/                                                                                                        \
   681   /*************************/                                                                                                        \
   683   /* LoaderConstraintEntry */                                                                                                        \
   682   /* LoaderConstraintEntry */                                                                                                        \
   684   /*************************/                                                                                                        \
   683   /*************************/                                                                                                        \
   685                                                                                                                                      \
   684                                                                                                                                      \
   686   nonstatic_field(LoaderConstraintEntry,       _name,                                         symbolOop)                             \
   685   nonstatic_field(LoaderConstraintEntry,       _name,                                         Symbol*)                               \
   687   nonstatic_field(LoaderConstraintEntry,       _num_loaders,                                  int)                                   \
   686   nonstatic_field(LoaderConstraintEntry,       _num_loaders,                                  int)                                   \
   688   nonstatic_field(LoaderConstraintEntry,       _max_loaders,                                  int)                                   \
   687   nonstatic_field(LoaderConstraintEntry,       _max_loaders,                                  int)                                   \
   689   nonstatic_field(LoaderConstraintEntry,       _loaders,                                      oop*)                                  \
   688   nonstatic_field(LoaderConstraintEntry,       _loaders,                                      oop*)                                  \
   690                                                                                                                                      \
   689                                                                                                                                      \
   691   /********************************/                                                                                                 \
   690   /********************************/                                                                                                 \
  1086            declare_type(methodOopDesc, oopDesc)                           \
  1085            declare_type(methodOopDesc, oopDesc)                           \
  1087            declare_type(objArrayKlass, arrayKlass)                        \
  1086            declare_type(objArrayKlass, arrayKlass)                        \
  1088            declare_type(objArrayKlassKlass, arrayKlassKlass)              \
  1087            declare_type(objArrayKlassKlass, arrayKlassKlass)              \
  1089            declare_type(objArrayOopDesc, arrayOopDesc)                    \
  1088            declare_type(objArrayOopDesc, arrayOopDesc)                    \
  1090            declare_type(constMethodOopDesc, oopDesc)                      \
  1089            declare_type(constMethodOopDesc, oopDesc)                      \
  1091            declare_type(symbolKlass, Klass)                               \
       
  1092            declare_type(symbolOopDesc, oopDesc)                           \
       
  1093            declare_type(typeArrayKlass, arrayKlass)                       \
  1090            declare_type(typeArrayKlass, arrayKlass)                       \
  1094            declare_type(typeArrayKlassKlass, arrayKlassKlass)             \
  1091            declare_type(typeArrayKlassKlass, arrayKlassKlass)             \
  1095            declare_type(typeArrayOopDesc, arrayOopDesc)                   \
  1092            declare_type(typeArrayOopDesc, arrayOopDesc)                   \
       
  1093            declare_toplevel_type(Symbol)                                  \
       
  1094            declare_toplevel_type(Symbol*)                                 \
  1096                                                                           \
  1095                                                                           \
  1097   /********/                                                              \
  1096   /********/                                                              \
  1098   /* Oops */                                                              \
  1097   /* Oops */                                                              \
  1099   /********/                                                              \
  1098   /********/                                                              \
  1100                                                                           \
  1099                                                                           \
  1107   declare_oop_type(objArrayOop)                                           \
  1106   declare_oop_type(objArrayOop)                                           \
  1108   declare_oop_type(oop)                                                   \
  1107   declare_oop_type(oop)                                                   \
  1109   declare_oop_type(narrowOop)                                             \
  1108   declare_oop_type(narrowOop)                                             \
  1110   declare_oop_type(wideKlassOop)                                          \
  1109   declare_oop_type(wideKlassOop)                                          \
  1111   declare_oop_type(constMethodOop)                                        \
  1110   declare_oop_type(constMethodOop)                                        \
  1112   declare_oop_type(symbolOop)                                             \
       
  1113   declare_oop_type(typeArrayOop)                                          \
  1111   declare_oop_type(typeArrayOop)                                          \
  1114                                                                           \
  1112                                                                           \
  1115   /*************************************/                                 \
  1113   /*************************************/                                 \
  1116   /* MethodOop-related data structures */                                 \
  1114   /* MethodOop-related data structures */                                 \
  1117   /*************************************/                                 \
  1115   /*************************************/                                 \
  1205   /*********************************/                                     \
  1203   /*********************************/                                     \
  1206   /* SymbolTable, SystemDictionary */                                     \
  1204   /* SymbolTable, SystemDictionary */                                     \
  1207   /*********************************/                                     \
  1205   /*********************************/                                     \
  1208                                                                           \
  1206                                                                           \
  1209   declare_toplevel_type(BasicHashtable)                                   \
  1207   declare_toplevel_type(BasicHashtable)                                   \
  1210     declare_type(Hashtable, BasicHashtable)                               \
  1208     declare_type(Hashtable<intptr_t>, BasicHashtable)                     \
  1211     declare_type(SymbolTable, Hashtable)                                  \
  1209   declare_type(SymbolTable, Hashtable<Symbol*>)                           \
  1212     declare_type(StringTable, Hashtable)                                  \
  1210   declare_type(StringTable, Hashtable<oop>)                               \
  1213     declare_type(LoaderConstraintTable, Hashtable)                        \
  1211     declare_type(LoaderConstraintTable, Hashtable<klassOop>)              \
  1214     declare_type(TwoOopHashtable, Hashtable)                              \
  1212     declare_type(TwoOopHashtable<klassOop>, Hashtable<klassOop>)          \
  1215     declare_type(Dictionary, TwoOopHashtable)                             \
  1213     declare_type(Dictionary, TwoOopHashtable<klassOop>)                   \
  1216     declare_type(PlaceholderTable, TwoOopHashtable)                       \
  1214     declare_type(PlaceholderTable, TwoOopHashtable<Symbol*>)              \
  1217   declare_toplevel_type(Hashtable*)                                       \
       
  1218   declare_toplevel_type(SymbolTable*)                                     \
       
  1219   declare_toplevel_type(StringTable*)                                     \
       
  1220   declare_toplevel_type(LoaderConstraintTable*)                           \
       
  1221   declare_toplevel_type(TwoOopHashtable*)                                 \
       
  1222   declare_toplevel_type(Dictionary*)                                      \
       
  1223   declare_toplevel_type(PlaceholderTable*)                                \
       
  1224   declare_toplevel_type(BasicHashtableEntry)                              \
  1215   declare_toplevel_type(BasicHashtableEntry)                              \
  1225   declare_toplevel_type(BasicHashtableEntry*)                             \
  1216   declare_type(HashtableEntry<intptr_t>, BasicHashtableEntry)             \
  1226     declare_type(HashtableEntry, BasicHashtableEntry)                     \
  1217     declare_type(DictionaryEntry, HashtableEntry<klassOop>)               \
  1227     declare_type(DictionaryEntry, HashtableEntry)                         \
  1218     declare_type(PlaceholderEntry, HashtableEntry<Symbol*>)               \
  1228     declare_type(PlaceholderEntry, HashtableEntry)                        \
  1219     declare_type(LoaderConstraintEntry, HashtableEntry<klassOop>)         \
  1229     declare_type(LoaderConstraintEntry, HashtableEntry)                   \
       
  1230   declare_toplevel_type(HashtableEntry*)                                  \
       
  1231   declare_toplevel_type(DictionaryEntry*)                                 \
       
  1232   declare_toplevel_type(HashtableBucket)                                  \
  1220   declare_toplevel_type(HashtableBucket)                                  \
  1233   declare_toplevel_type(HashtableBucket*)                                 \
       
  1234   declare_toplevel_type(SystemDictionary)                                 \
  1221   declare_toplevel_type(SystemDictionary)                                 \
  1235   declare_toplevel_type(ProtectionDomainEntry)                            \
  1222   declare_toplevel_type(ProtectionDomainEntry)                            \
  1236   declare_toplevel_type(ProtectionDomainEntry*)                           \
       
  1237                                                                           \
  1223                                                                           \
  1238   /***********************************************************/           \
  1224   /***********************************************************/           \
  1239   /* Thread hierarchy (needed for run-time type information) */           \
  1225   /* Thread hierarchy (needed for run-time type information) */           \
  1240   /***********************************************************/           \
  1226   /***********************************************************/           \
  1241                                                                           \
  1227                                                                           \
  1665   declare_constant(instanceKlass::being_initialized)                      \
  1651   declare_constant(instanceKlass::being_initialized)                      \
  1666   declare_constant(instanceKlass::fully_initialized)                      \
  1652   declare_constant(instanceKlass::fully_initialized)                      \
  1667   declare_constant(instanceKlass::initialization_error)                   \
  1653   declare_constant(instanceKlass::initialization_error)                   \
  1668                                                                           \
  1654                                                                           \
  1669   /*********************************/                                     \
  1655   /*********************************/                                     \
  1670   /* symbolOop - symbol max length */                                     \
  1656   /* Symbol* - symbol max length */                                     \
  1671   /*********************************/                                     \
  1657   /*********************************/                                     \
  1672                                                                           \
  1658                                                                           \
  1673   declare_constant(symbolOopDesc::max_symbol_length)                      \
  1659   declare_constant(Symbol::max_symbol_length)                             \
  1674                                                                           \
  1660                                                                           \
  1675   /*************************************************/                     \
  1661   /*************************************************/                     \
  1676   /* constantPoolOop layout enum for InvokeDynamic */                     \
  1662   /* constantPoolOop layout enum for InvokeDynamic */                     \
  1677   /*************************************************/                     \
  1663   /*************************************************/                     \
  1678                                                                           \
  1664                                                                           \
  2429 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value);
  2415 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value);
  2430 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants);
  2416 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants);
  2431 }
  2417 }
  2432 
  2418 
  2433 #ifdef ASSERT
  2419 #ifdef ASSERT
       
  2420 static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) {
       
  2421   {
       
  2422     VMTypeEntry* types = origtypes;
       
  2423     while (types->typeName != NULL) {
       
  2424       if (!strcmp(typeName, types->typeName)) {
       
  2425         return 1;
       
  2426       }
       
  2427       ++types;
       
  2428     }
       
  2429   }
       
  2430   size_t len = strlen(typeName);
       
  2431   if (typeName[len-1] == '*') {
       
  2432     char * s = new char[len];
       
  2433     strncpy(s, typeName, len - 1);
       
  2434     s[len-1] = '\0';
       
  2435     // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
       
  2436     if (recursiveFindType(origtypes, s, true) == 1) {
       
  2437       delete s;
       
  2438       return 1;
       
  2439     }
       
  2440     delete s;
       
  2441   }
       
  2442   if (strstr(typeName, "GrowableArray<") == typeName) {
       
  2443     const char * start = typeName + strlen("GrowableArray<");
       
  2444     const char * end = strrchr(typeName, '>');
       
  2445     int len = end - start + 1;
       
  2446     char * s = new char[len];
       
  2447     strncpy(s, start, len - 1);
       
  2448     s[len-1] = '\0';
       
  2449     // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
       
  2450     if (recursiveFindType(origtypes, s, true) == 1) {
       
  2451       delete s;
       
  2452       return 1;
       
  2453     }
       
  2454     delete s;
       
  2455   }
       
  2456   if (strstr(typeName, "const ") == typeName) {
       
  2457     const char * s = typeName + strlen("const ");
       
  2458     // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
       
  2459     if (recursiveFindType(origtypes, s, true) == 1) {
       
  2460       return 1;
       
  2461     }
       
  2462   }
       
  2463   if (strstr(typeName, " const") == typeName + len - 6) {
       
  2464     char * s = strdup(typeName);
       
  2465     s[len - 6] = '\0';
       
  2466     // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName);
       
  2467     if (recursiveFindType(origtypes, s, true) == 1) {
       
  2468       return 1;
       
  2469     }
       
  2470   }
       
  2471   if (!isRecurse) {
       
  2472     tty->print_cr("type \"%s\" not found", typeName);
       
  2473   }
       
  2474   return 2;
       
  2475 }
       
  2476 
       
  2477 
  2434 int
  2478 int
  2435 VMStructs::findType(const char* typeName) {
  2479 VMStructs::findType(const char* typeName) {
  2436   VMTypeEntry* types = gHotSpotVMTypes;
  2480   VMTypeEntry* types = gHotSpotVMTypes;
  2437 
  2481 
  2438   while (types->typeName != NULL) {
  2482   return recursiveFindType(types, typeName, false);
  2439     if (!strcmp(typeName, types->typeName)) {
       
  2440       return 1;
       
  2441     }
       
  2442     ++types;
       
  2443   }
       
  2444   return 0;
       
  2445 }
  2483 }
  2446 #endif
  2484 #endif
  2447 
  2485 
  2448 void vmStructs_init() {
  2486 void vmStructs_init() {
  2449   debug_only(VMStructs::init());
  2487   debug_only(VMStructs::init());