< prev index next >
src/hotspot/share/oops/fieldInfo.hpp
Print this page
@@ -49,13 +49,12 @@
#define FIELDINFO_TAG_BLANK 0
#define FIELDINFO_TAG_OFFSET 1
#define FIELDINFO_TAG_TYPE_PLAIN 2
#define FIELDINFO_TAG_TYPE_CONTENDED 3
#define FIELDINFO_TAG_TYPE_MASK 3
-#define FIELDINFO_TAG_MASK 15
-#define FIELDINFO_FLATTENING_OFFSET 2
-#define FIELDINFO_FLATTENABLE_OFFSET 3
+#define FIELDINFO_TAG_MASK 7
+#define FIELDINFO_FLATTENED_OFFSET 2
// Packed field has the tag, and can be either of:
// hi bits <--------------------------- lo bits
// |---------high---------|---------low---------|
// ..........................................00 - blank
@@ -196,26 +195,26 @@
}
void set_access_flags(u2 val) { _shorts[access_flags_offset] = val; }
void set_offset(u4 val) {
val = val << FIELDINFO_TAG_SIZE; // make room for tag
- bool flatten = is_flatten();
+ bool flattened = is_flattened();
_shorts[low_packed_offset] = extract_low_short_from_int(val) | FIELDINFO_TAG_OFFSET;
- if (flatten) set_flattening(true);
+ if (flattened) set_flattened(true);
_shorts[high_packed_offset] = extract_high_short_from_int(val);
- assert(is_flatten() || !flatten, "just checking");
+ assert(is_flattened() || !flattened, "just checking");
}
void set_allocation_type(int type) {
- bool b = is_flatten();
+ bool b = is_flattened();
u2 lo = _shorts[low_packed_offset];
switch(lo & FIELDINFO_TAG_TYPE_MASK) {
case FIELDINFO_TAG_BLANK:
_shorts[low_packed_offset] |= ((type << FIELDINFO_TAG_SIZE)) & 0xFFFF;
_shorts[low_packed_offset] &= ~FIELDINFO_TAG_TYPE_MASK;
_shorts[low_packed_offset] |= FIELDINFO_TAG_TYPE_PLAIN;
- assert(is_flatten() || !b, "Just checking");
+ assert(is_flattened() || !b, "Just checking");
return;
#ifndef PRODUCT
case FIELDINFO_TAG_TYPE_PLAIN:
case FIELDINFO_TAG_TYPE_CONTENDED:
case FIELDINFO_TAG_OFFSET:
@@ -223,32 +222,20 @@
#endif
}
ShouldNotReachHere();
}
- void set_flattening(bool b) {
+ void set_flattened(bool b) {
if (b) {
- _shorts[low_packed_offset] |= 1 << FIELDINFO_FLATTENING_OFFSET;
+ _shorts[low_packed_offset] |= 1 << FIELDINFO_FLATTENED_OFFSET;
} else {
- _shorts[low_packed_offset] &= ~(1 << FIELDINFO_FLATTENING_OFFSET);
+ _shorts[low_packed_offset] &= ~(1 << FIELDINFO_FLATTENED_OFFSET);
}
}
- bool is_flatten() {
- return ((_shorts[low_packed_offset] >> FIELDINFO_FLATTENING_OFFSET) & 1) != 0;
- }
-
- void set_flattenable(bool b) {
- if (b) {
- _shorts[low_packed_offset] |= 1 << FIELDINFO_FLATTENABLE_OFFSET;
- } else {
- _shorts[low_packed_offset] &= ~(1 << FIELDINFO_FLATTENABLE_OFFSET);
- }
- }
-
- bool is_flattenable() {
- return ((_shorts[low_packed_offset] >> FIELDINFO_FLATTENABLE_OFFSET) & 1) != 0;
+ bool is_flattened() {
+ return ((_shorts[low_packed_offset] >> FIELDINFO_FLATTENED_OFFSET) & 1) != 0;
}
void set_contended_group(u2 val) {
u2 lo = _shorts[low_packed_offset];
switch(lo & FIELDINFO_TAG_TYPE_MASK) {
@@ -278,10 +265,14 @@
void set_stable(bool z) {
if (z) _shorts[access_flags_offset] |= JVM_ACC_FIELD_STABLE;
else _shorts[access_flags_offset] &= ~JVM_ACC_FIELD_STABLE;
}
+ bool is_flattenable() const {
+ return (access_flags() & JVM_ACC_FLATTENABLE) != 0;
+ }
+
Symbol* lookup_symbol(int symbol_index) const {
assert(is_internal(), "only internal fields");
return vmSymbols::symbol_at((vmSymbols::SID)symbol_index);
}
};
< prev index next >