114 115 // Same question, explicit units. (Fields are aligned to the byte level.) 116 int offset_in_bytes() const { 117 return offset(); 118 } 119 120 // Is this field shared? 121 bool is_shared() { 122 // non-static fields of shared holders are cached 123 return _holder->is_shared() && !is_static(); 124 } 125 126 // Is this field a constant? 127 // 128 // Clarification: A field is considered constant if: 129 // 1. The field is both static and final 130 // 2. The field is not one of the special static/final 131 // non-constant fields. These are java.lang.System.in 132 // and java.lang.System.out. Abomination. 133 // 134 // A field is also considered constant if it is marked @Stable 135 // and is non-null (or non-zero, if a primitive). 136 // 137 // A user should also check the field value (constant_value().is_valid()), since 138 // constant fields of non-initialized classes don't have values yet. 139 bool is_constant() const { return _is_constant; } 140 141 // Get the constant value of the static field. 142 ciConstant constant_value(); 143 144 bool is_static_constant() { 145 return is_static() && is_constant() && constant_value().is_valid(); 146 } 147 148 // Get the constant value of non-static final field in the given 149 // object. 150 ciConstant constant_value_of(ciObject* object); 151 152 // Check for link time errors. Accessing a field from a 153 // certain class via a certain bytecode may or may not be legal. 154 // This call checks to see if an exception may be raised by 155 // an access of this field. 156 // 157 // Usage note: if the same field is accessed multiple times 158 // in the same compilation, will_link will need to be checked 159 // at each point of access. 160 bool will_link(ciInstanceKlass* accessing_klass, 161 Bytecodes::Code bc); 162 163 // Java access flags 164 bool is_public () const { return flags().is_public(); } 165 bool is_private () const { return flags().is_private(); } 166 bool is_protected () const { return flags().is_protected(); } 167 bool is_static () const { return flags().is_static(); } 168 bool is_final () const { return flags().is_final(); } 169 bool is_stable () const { return flags().is_stable(); } 170 bool is_volatile () const { return flags().is_volatile(); } 171 bool is_transient () const { return flags().is_transient(); } 172 173 bool is_call_site_target() { 174 ciInstanceKlass* callsite_klass = CURRENT_ENV->CallSite_klass(); 175 if (callsite_klass == NULL) 176 return false; 177 return (holder()->is_subclass_of(callsite_klass) && (name() == ciSymbol::target_name())); 178 } 179 180 bool is_autobox_cache() { | 114 115 // Same question, explicit units. (Fields are aligned to the byte level.) 116 int offset_in_bytes() const { 117 return offset(); 118 } 119 120 // Is this field shared? 121 bool is_shared() { 122 // non-static fields of shared holders are cached 123 return _holder->is_shared() && !is_static(); 124 } 125 126 // Is this field a constant? 127 // 128 // Clarification: A field is considered constant if: 129 // 1. The field is both static and final 130 // 2. The field is not one of the special static/final 131 // non-constant fields. These are java.lang.System.in 132 // and java.lang.System.out. Abomination. 133 // 134 // A field is also considered constant if 135 // - it is marked @Stable and is non-null (or non-zero, if a primitive) or 136 // - it is trusted or 137 // - it is the target field of a CallSite object. 138 // 139 // See ciField::initialize_from() for more details. 140 // 141 // A user should also check the field value (constant_value().is_valid()), since 142 // constant fields of non-initialized classes don't have values yet. 143 bool is_constant() const { return _is_constant; } 144 145 // Get the constant value of the static field. 146 ciConstant constant_value(); 147 148 bool is_static_constant() { 149 return is_static() && is_constant() && constant_value().is_valid(); 150 } 151 152 // Get the constant value of non-static final field in the given 153 // object. 154 ciConstant constant_value_of(ciObject* object); 155 156 // Check for link time errors. Accessing a field from a 157 // certain class via a certain bytecode may or may not be legal. 158 // This call checks to see if an exception may be raised by 159 // an access of this field. 160 // 161 // Usage note: if the same field is accessed multiple times 162 // in the same compilation, will_link will need to be checked 163 // at each point of access. 164 bool will_link(ciInstanceKlass* accessing_klass, 165 ciMethod* accessing_method, 166 Bytecodes::Code bc); 167 168 // Java access flags 169 bool is_public () const { return flags().is_public(); } 170 bool is_private () const { return flags().is_private(); } 171 bool is_protected () const { return flags().is_protected(); } 172 bool is_static () const { return flags().is_static(); } 173 bool is_final () const { return flags().is_final(); } 174 bool is_stable () const { return flags().is_stable(); } 175 bool is_volatile () const { return flags().is_volatile(); } 176 bool is_transient () const { return flags().is_transient(); } 177 178 bool is_call_site_target() { 179 ciInstanceKlass* callsite_klass = CURRENT_ENV->CallSite_klass(); 180 if (callsite_klass == NULL) 181 return false; 182 return (holder()->is_subclass_of(callsite_klass) && (name() == ciSymbol::target_name())); 183 } 184 185 bool is_autobox_cache() { |