src/share/vm/oops/oopsHierarchy.hpp

changeset 4037
da91efe96a93
parent 2658
c7f3d0b4570f
child 4047
aed758eda82a
     1.1 --- a/src/share/vm/oops/oopsHierarchy.hpp	Fri Aug 31 16:39:35 2012 -0700
     1.2 +++ b/src/share/vm/oops/oopsHierarchy.hpp	Sat Sep 01 13:25:18 2012 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -33,29 +33,19 @@
    1.11  // of B, A's representation is a prefix of B's representation.
    1.12  
    1.13  typedef juint narrowOop; // Offset instead of address for an oop within a java object
    1.14 -typedef class klassOopDesc* wideKlassOop; // to keep SA happy and unhandled oop
    1.15 -                                          // detector happy.
    1.16  typedef void* OopOrNarrowOopStar;
    1.17 +typedef class   markOopDesc*                markOop;
    1.18  
    1.19  #ifndef CHECK_UNHANDLED_OOPS
    1.20  
    1.21  typedef class oopDesc*                            oop;
    1.22  typedef class   instanceOopDesc*            instanceOop;
    1.23 -typedef class   methodOopDesc*                    methodOop;
    1.24 -typedef class   constMethodOopDesc*            constMethodOop;
    1.25 -typedef class   methodDataOopDesc*            methodDataOop;
    1.26  typedef class   arrayOopDesc*                    arrayOop;
    1.27  typedef class     objArrayOopDesc*            objArrayOop;
    1.28  typedef class     typeArrayOopDesc*            typeArrayOop;
    1.29 -typedef class   constantPoolOopDesc*            constantPoolOop;
    1.30 -typedef class   constantPoolCacheOopDesc*   constantPoolCacheOop;
    1.31 -typedef class   klassOopDesc*                    klassOop;
    1.32 -typedef class   markOopDesc*                    markOop;
    1.33 -typedef class   compiledICHolderOopDesc*    compiledICHolderOop;
    1.34  
    1.35  #else
    1.36  
    1.37 -
    1.38  // When CHECK_UNHANDLED_OOPS is defined, an "oop" is a class with a
    1.39  // carefully chosen set of constructors and conversion operators to go
    1.40  // to and from the underlying oopDesc pointer type.
    1.41 @@ -71,7 +61,6 @@
    1.42  // instead, which generates less code anyway.
    1.43  
    1.44  class Thread;
    1.45 -typedef class   markOopDesc*                markOop;
    1.46  class PromotedObject;
    1.47  
    1.48  
    1.49 @@ -106,7 +95,7 @@
    1.50    oopDesc*  operator->() const        { return obj(); }
    1.51    bool operator==(const oop o) const  { return obj() == o.obj(); }
    1.52    bool operator==(void *p) const      { return obj() == p; }
    1.53 -  bool operator!=(const oop o) const  { return obj() != o.obj(); }
    1.54 +  bool operator!=(const volatile oop o) const  { return obj() != o.obj(); }
    1.55    bool operator!=(void *p) const      { return obj() != p; }
    1.56    bool operator==(intptr_t p) const   { return obj() == (oopDesc*)p; }
    1.57    bool operator!=(intptr_t p) const   { return obj() != (oopDesc*)p; }
    1.58 @@ -126,7 +115,7 @@
    1.59    operator markOop () const           { return markOop(obj()); }
    1.60  
    1.61    operator address   () const         { return (address)obj(); }
    1.62 -  operator intptr_t () const          { return (intptr_t)obj(); }
    1.63 +  operator intptr_t () const volatile { return (intptr_t)obj(); }
    1.64  
    1.65    // from javaCalls.cpp
    1.66    operator jobject () const           { return (jobject)obj(); }
    1.67 @@ -139,7 +128,7 @@
    1.68  #endif
    1.69  
    1.70    // from parNewGeneration and other things that want to get to the end of
    1.71 -  // an oop for stuff (like constMethodKlass.cpp, objArrayKlass.cpp)
    1.72 +  // an oop for stuff (like objArrayKlass.cpp)
    1.73    operator oop* () const              { return (oop *)obj(); }
    1.74  };
    1.75  
    1.76 @@ -154,41 +143,37 @@
    1.77         type##OopDesc* operator->() const {                                 \
    1.78              return (type##OopDesc*)obj();                                  \
    1.79         }                                                                   \
    1.80 -   };                                                                      \
    1.81 +   };
    1.82  
    1.83  DEF_OOP(instance);
    1.84 -DEF_OOP(method);
    1.85 -DEF_OOP(methodData);
    1.86  DEF_OOP(array);
    1.87 -DEF_OOP(constMethod);
    1.88 -DEF_OOP(constantPool);
    1.89 -DEF_OOP(constantPoolCache);
    1.90  DEF_OOP(objArray);
    1.91  DEF_OOP(typeArray);
    1.92 -DEF_OOP(klass);
    1.93 -DEF_OOP(compiledICHolder);
    1.94  
    1.95  #endif // CHECK_UNHANDLED_OOPS
    1.96  
    1.97 +// The metadata hierarchy is separate from the oop hierarchy
    1.98 +
    1.99 +//      class MetaspaceObj
   1.100 +class   ConstMethod;
   1.101 +class   ConstantPoolCache;
   1.102 +class   MethodData;
   1.103 +//      class Metadata
   1.104 +class   Method;
   1.105 +class   ConstantPool;
   1.106 +//      class CHeapObj
   1.107 +class   CompiledICHolder;
   1.108 +
   1.109 +
   1.110  // The klass hierarchy is separate from the oop hierarchy.
   1.111  
   1.112  class Klass;
   1.113 -class   instanceKlass;
   1.114 +class   InstanceKlass;
   1.115  class     instanceMirrorKlass;
   1.116 +class     instanceClassLoaderKlass;
   1.117  class     instanceRefKlass;
   1.118 -class   methodKlass;
   1.119 -class   constMethodKlass;
   1.120 -class   methodDataKlass;
   1.121 -class   klassKlass;
   1.122 -class     instanceKlassKlass;
   1.123 -class     arrayKlassKlass;
   1.124 -class       objArrayKlassKlass;
   1.125 -class       typeArrayKlassKlass;
   1.126  class   arrayKlass;
   1.127  class     objArrayKlass;
   1.128  class     typeArrayKlass;
   1.129 -class   constantPoolKlass;
   1.130 -class   constantPoolCacheKlass;
   1.131 -class   compiledICHolderKlass;
   1.132  
   1.133  #endif // SHARE_VM_OOPS_OOPSHIERARCHY_HPP

mercurial