--- old/src/share/vm/opto/memnode.cpp	Wed Feb  4 17:02:15 2009
+++ new/src/share/vm/opto/memnode.cpp	Wed Feb  4 17:02:15 2009
@@ -1304,7 +1304,8 @@
     Node*    base   = AddPNode::Ideal_base_and_offset(address, phase, ignore);
     if (base != NULL
         && phase->type(base)->higher_equal(TypePtr::NOTNULL)
-        && all_controls_dominate(base, phase->C->start())) {
+        && all_controls_dominate(base, phase->C->start())
+        && phase->C->get_alias_index(phase->type(address)->is_ptr()) != Compile::AliasIdxRaw) {
       // A method-invariant, non-null address (constant or 'this' argument).
       set_req(MemNode::Control, NULL);
     }
