src/share/vm/ci/ciField.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/ciField.hpp	Fri Jun 10 19:38:02 2016
--- new/src/share/vm/ci/ciField.hpp	Fri Jun 10 19:38:02 2016

*** 46,56 **** --- 46,56 ---- ciSymbol* _name; ciSymbol* _signature; ciType* _type; int _offset; bool _is_constant; ! ciInstanceKlass* _known_to_link_with_put; ! ciMethod* _known_to_link_with_put; ciInstanceKlass* _known_to_link_with_get; ciConstant _constant_value; ciType* compute_type(); ciType* compute_type_impl();
*** 129,140 **** --- 129,144 ---- // 1. The field is both static and final // 2. The field is not one of the special static/final // non-constant fields. These are java.lang.System.in // and java.lang.System.out. Abomination. // - // A field is also considered constant if it is marked @Stable // and is non-null (or non-zero, if a primitive). + // - it is marked @Stable and is non-null (or non-zero, if a primitive) or + // - it is trusted or + // - it is the target field of a CallSite object. + // + // See ciField::initialize_from() for more details. // // A user should also check the field value (constant_value().is_valid()), since // constant fields of non-initialized classes don't have values yet. bool is_constant() const { return _is_constant; }
*** 148,165 **** --- 152,169 ---- // Get the constant value of non-static final field in the given // object. ciConstant constant_value_of(ciObject* object); // Check for link time errors. Accessing a field from a ! // certain class via a certain bytecode may or may not be legal. ! // certain method via a certain bytecode may or may not be legal. // This call checks to see if an exception may be raised by // an access of this field. // // Usage note: if the same field is accessed multiple times // in the same compilation, will_link will need to be checked // at each point of access. ! bool will_link(ciInstanceKlass* accessing_klass, ! bool will_link(ciMethod* accessing_method, Bytecodes::Code bc); // Java access flags bool is_public () const { return flags().is_public(); } bool is_private () const { return flags().is_private(); }
*** 167,176 **** --- 171,183 ---- 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(); } + // 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() { ciInstanceKlass* callsite_klass = CURRENT_ENV->CallSite_klass(); if (callsite_klass == NULL) return false;

src/share/vm/ci/ciField.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File