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