< prev index next >
src/hotspot/share/ci/ciField.hpp
Print this page
@@ -47,19 +47,22 @@
ciSymbol* _name;
ciSymbol* _signature;
ciType* _type;
int _offset;
bool _is_constant;
+ bool _is_flattened;
+ bool _is_flattenable;
ciMethod* _known_to_link_with_put;
ciInstanceKlass* _known_to_link_with_get;
ciConstant _constant_value;
ciType* compute_type();
ciType* compute_type_impl();
ciField(ciInstanceKlass* klass, int index);
ciField(fieldDescriptor* fd);
+ ciField(ciField* field, ciInstanceKlass* holder, int offset, bool is_final);
// shared constructor code
void initialize_from(fieldDescriptor* fd);
public:
@@ -100,11 +103,11 @@
// Of what type is this field?
ciType* type() { return (_type == NULL) ? compute_type() : _type; }
// How is this field actually stored in memory?
- BasicType layout_type() { return type2field[(_type == NULL) ? T_OBJECT : _type->basic_type()]; }
+ BasicType layout_type() { return type2field[type()->basic_type()]; }
// How big is this field in memory?
int size_in_bytes() { return type2aelembytes(layout_type()); }
// What is the offset of this field?
@@ -172,10 +175,13 @@
bool is_static () const { return flags().is_static(); }
bool is_final () const { return flags().is_final(); }
bool is_stable () const { return flags().is_stable(); }
bool is_volatile () const { return flags().is_volatile(); }
bool is_transient () const { return flags().is_transient(); }
+ bool is_flattened () const { return _is_flattened; }
+ bool is_flattenable () const { return _is_flattenable; }
+
// The field is modified outside of instance initializer methods
// (or class/initializer methods if the field is static).
bool has_initialized_final_update() const { return flags().has_initialized_final_update(); }
bool is_call_site_target() {
< prev index next >