20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 #ifndef SHARE_GC_Z_ZNMETHODTABLEENTRY_HPP
25 #define SHARE_GC_Z_ZNMETHODTABLEENTRY_HPP
26
27 #include "gc/z/zBitField.hpp"
28 #include "memory/allocation.hpp"
29
30 //
31 // NMethod table entry layout
32 // --------------------------
33 //
34 // 6
35 // 3 2 1 0
36 // +---------------------------------------------------------------------+-+-+
37 // |11111111 11111111 11111111 11111111 11111111 11111111 11111111 111111|1|1|
38 // +---------------------------------------------------------------------+-+-+
39 // | | |
40 // | | |
41 // | | |
42 // | 1-1 Unregistered Flag (1-bits) * |
43 // | |
44 // | 0-0 Registered Flag (1-bits) *
45 // |
46 // * 63-3 NMethod Address (61-bits)
47 //
48
49 class nmethod;
50
51 class ZNMethodTableEntry : public CHeapObj<mtGC> {
52 private:
53 typedef ZBitField<uint64_t, bool, 0, 1> field_registered;
54 typedef ZBitField<uint64_t, bool, 1, 1> field_unregistered;
55 typedef ZBitField<uint64_t, nmethod*, 2, 62, 2> field_method;
56
57 uint64_t _entry;
58
59 public:
60 explicit ZNMethodTableEntry(bool unregistered = false) :
61 _entry(field_registered::encode(false) |
62 field_unregistered::encode(unregistered) |
63 field_method::encode(NULL)) {}
64
65 explicit ZNMethodTableEntry(nmethod* method) :
66 _entry(field_registered::encode(true) |
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 #ifndef SHARE_GC_Z_ZNMETHODTABLEENTRY_HPP
25 #define SHARE_GC_Z_ZNMETHODTABLEENTRY_HPP
26
27 #include "gc/z/zBitField.hpp"
28 #include "memory/allocation.hpp"
29
30 //
31 // NMethod table entry layout
32 // --------------------------
33 //
34 // 6
35 // 3 2 1 0
36 // +---------------------------------------------------------------------+-+-+
37 // |11111111 11111111 11111111 11111111 11111111 11111111 11111111 111111|1|1|
38 // +---------------------------------------------------------------------+-+-+
39 // | | |
40 // | 1-1 Unregistered Flag (1-bits) * |
41 // | |
42 // | 0-0 Registered Flag (1-bits) *
43 // |
44 // * 63-2 NMethod Address (62-bits)
45 //
46
47 class nmethod;
48
49 class ZNMethodTableEntry : public CHeapObj<mtGC> {
50 private:
51 typedef ZBitField<uint64_t, bool, 0, 1> field_registered;
52 typedef ZBitField<uint64_t, bool, 1, 1> field_unregistered;
53 typedef ZBitField<uint64_t, nmethod*, 2, 62, 2> field_method;
54
55 uint64_t _entry;
56
57 public:
58 explicit ZNMethodTableEntry(bool unregistered = false) :
59 _entry(field_registered::encode(false) |
60 field_unregistered::encode(unregistered) |
61 field_method::encode(NULL)) {}
62
63 explicit ZNMethodTableEntry(nmethod* method) :
64 _entry(field_registered::encode(true) |
|