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