< prev index next >
src/share/vm/opto/memnode.cpp
Print this page
@@ -65,12 +65,19 @@
_adr_type = in(Address)->bottom_type()->isa_ptr();
#endif
dump_adr_type(this, _adr_type, st);
Compile* C = Compile::current();
- if( C->alias_type(_adr_type)->is_volatile() )
+ if (C->alias_type(_adr_type)->is_volatile()) {
st->print(" Volatile!");
+ }
+ if (_unaligned_access) {
+ st->print(" unaligned");
+ }
+ if (_mismatched_access) {
+ st->print(" mismatched");
+ }
}
void MemNode::dump_adr_type(const Node* mem, const TypePtr* adr_type, outputStream *st) {
st->print(" @");
if (adr_type == NULL) {
@@ -3320,10 +3327,13 @@
// an initialization. Returns zero if a check fails.
// On success, returns the (constant) offset to which the store applies,
// within the initialized memory.
intptr_t InitializeNode::can_capture_store(StoreNode* st, PhaseTransform* phase, bool can_reshape) {
const int FAIL = 0;
+ if (st->is_unaligned_access()) {
+ return FAIL;
+ }
if (st->req() != MemNode::ValueIn + 1)
return FAIL; // an inscrutable StoreNode (card mark?)
Node* ctl = st->in(MemNode::Control);
if (!(ctl != NULL && ctl->is_Proj() && ctl->in(0) == this))
return FAIL; // must be unconditional after the initialization
< prev index next >