hotspot/src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/hotspot/src/share/vm/opto/compile.hpp	Tue Jul 23 21:21:45 2013
--- new/hotspot/src/share/vm/opto/compile.hpp	Tue Jul 23 21:21:45 2013

*** 70,79 **** --- 70,80 ---- class relocInfo; class Scope; class StartNode; class SafePointNode; class JVMState; + class Type; class TypeData; class TypePtr; class TypeOopPtr; class TypeFunc; class Unique_Node_List;
*** 117,145 **** --- 118,154 ---- friend class Compile; int _index; // unique index, used with MergeMemNode const TypePtr* _adr_type; // normalized address type ciField* _field; // relevant instance field, or null if none + const Type* _element; // relevant array element type, or null if none bool _is_rewritable; // false if the memory is write-once only int _general_index; // if this is type is an instance, the general // type that this is an instance of void Init(int i, const TypePtr* at); public: int index() const { return _index; } const TypePtr* adr_type() const { return _adr_type; } ciField* field() const { return _field; } + const Type* element() const { return _element; } bool is_rewritable() const { return _is_rewritable; } bool is_volatile() const { return (_field ? _field->is_volatile() : false); } int general_index() const { return (_general_index != 0) ? _general_index : _index; } void set_rewritable(bool z) { _is_rewritable = z; } void set_field(ciField* f) { assert(!_field,""); _field = f; ! if (f->is_final()) _is_rewritable = false; ! if (f->is_final() || f->is_stable()) + _is_rewritable = false; + // In the case of @Stable, multiple writes are possible but may be assumed to be no-ops. + } + void set_element(const Type* e) { + assert(_element == NULL, ""); + _element = e; } void print_on(outputStream* st) PRODUCT_RETURN; };

hotspot/src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File