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