< prev index next >

src/share/vm/oops/cpCache.hpp

Print this page




  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_OOPS_CPCACHEOOP_HPP
  26 #define SHARE_VM_OOPS_CPCACHEOOP_HPP
  27 
  28 #include "interpreter/bytecodes.hpp"
  29 #include "memory/allocation.hpp"
  30 #include "oops/array.hpp"
  31 #include "runtime/orderAccess.hpp"

  32 
  33 class PSPromotionManager;
  34 
  35 // The ConstantPoolCache is not a cache! It is the resolution table that the
  36 // interpreter uses to avoid going into the runtime and a way to access resolved
  37 // values.
  38 
  39 // A ConstantPoolCacheEntry describes an individual entry of the constant
  40 // pool cache. There's 2 principal kinds of entries: field entries for in-
  41 // stance & static field access, and method entries for invokes. Some of
  42 // the entry layout is shared and looks as follows:
  43 //
  44 // bit number |31                0|
  45 // bit length |-8--|-8--|---16----|
  46 // --------------------------------
  47 // _indices   [ b2 | b1 |  index  ]  index = constant_pool_index
  48 // _f1        [  entry specific   ]  metadata ptr (method or klass)
  49 // _f2        [  entry specific   ]  vtable or res_ref index, or vfinal method ptr
  50 // _flags     [tos|0|F=1|0|0|0|f|v|0 |0000|field_index] (for field entries)
  51 // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|----16-----]




  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_OOPS_CPCACHEOOP_HPP
  26 #define SHARE_VM_OOPS_CPCACHEOOP_HPP
  27 
  28 #include "interpreter/bytecodes.hpp"
  29 #include "memory/allocation.hpp"
  30 #include "oops/array.hpp"
  31 #include "runtime/orderAccess.hpp"
  32 #include "utilities/align.hpp"
  33 
  34 class PSPromotionManager;
  35 
  36 // The ConstantPoolCache is not a cache! It is the resolution table that the
  37 // interpreter uses to avoid going into the runtime and a way to access resolved
  38 // values.
  39 
  40 // A ConstantPoolCacheEntry describes an individual entry of the constant
  41 // pool cache. There's 2 principal kinds of entries: field entries for in-
  42 // stance & static field access, and method entries for invokes. Some of
  43 // the entry layout is shared and looks as follows:
  44 //
  45 // bit number |31                0|
  46 // bit length |-8--|-8--|---16----|
  47 // --------------------------------
  48 // _indices   [ b2 | b1 |  index  ]  index = constant_pool_index
  49 // _f1        [  entry specific   ]  metadata ptr (method or klass)
  50 // _f2        [  entry specific   ]  vtable or res_ref index, or vfinal method ptr
  51 // _flags     [tos|0|F=1|0|0|0|f|v|0 |0000|field_index] (for field entries)
  52 // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|----16-----]


< prev index next >