--- old/src/share/vm/opto/machnode.cpp 2014-11-12 15:39:55.000000000 +0400 +++ new/src/share/vm/opto/machnode.cpp 2014-11-12 15:39:55.000000000 +0400 @@ -561,7 +561,9 @@ const TypePtr *MachProjNode::adr_type() const { if (bottom_type() == Type::MEMORY) { // in(0) might be a narrow MemBar; otherwise we will report TypePtr::BOTTOM - const TypePtr* adr_type = in(0)->adr_type(); + Node* ctrl = in(0); + if (ctrl == NULL) return NULL; // node is dead + const TypePtr* adr_type = ctrl->adr_type(); #ifdef ASSERT if (!is_error_reported() && !Node::in_dump()) assert(adr_type != NULL, "source must have adr_type"); --- old/src/share/vm/opto/memnode.cpp 2014-11-12 15:39:56.000000000 +0400 +++ new/src/share/vm/opto/memnode.cpp 2014-11-12 15:39:56.000000000 +0400 @@ -52,6 +52,7 @@ const TypePtr *MemNode::adr_type() const { Node* adr = in(Address); + if (adr == NULL) return NULL; // node is dead const TypePtr* cross_check = NULL; DEBUG_ONLY(cross_check = _adr_type); return calculate_adr_type(adr->bottom_type(), cross_check); @@ -2721,6 +2722,7 @@ // Do we Match on this edge index or not? Do not match memory const TypePtr* ClearArrayNode::adr_type() const { Node *adr = in(3); + if (adr == NULL) return NULL; // node is dead return MemNode::calculate_adr_type(adr->bottom_type()); } --- old/src/share/vm/opto/memnode.hpp 2014-11-12 15:39:57.000000000 +0400 +++ new/src/share/vm/opto/memnode.hpp 2014-11-12 15:39:57.000000000 +0400 @@ -722,7 +722,11 @@ virtual int Opcode() const; virtual bool is_CFG() const { return false; } virtual const Type *bottom_type() const {return Type::MEMORY;} - virtual const TypePtr *adr_type() const { return in(0)->in(MemNode::Memory)->adr_type();} + virtual const TypePtr *adr_type() const { + Node* ctrl = in(0); + if (ctrl == NULL) return NULL; // node is dead + return ctrl->in(MemNode::Memory)->adr_type(); + } virtual uint ideal_reg() const { return 0;} // memory projections don't have a register virtual const Type *Value( PhaseTransform *phase ) const; #ifndef PRODUCT --- old/src/share/vm/opto/multnode.cpp 2014-11-12 15:39:58.000000000 +0400 +++ new/src/share/vm/opto/multnode.cpp 2014-11-12 15:39:58.000000000 +0400 @@ -102,7 +102,9 @@ const TypePtr *ProjNode::adr_type() const { if (bottom_type() == Type::MEMORY) { // in(0) might be a narrow MemBar; otherwise we will report TypePtr::BOTTOM - const TypePtr* adr_type = in(0)->adr_type(); + Node* ctrl = in(0); + if (ctrl == NULL) return NULL; // node is dead + const TypePtr* adr_type = ctrl->adr_type(); #ifdef ASSERT if (!is_error_reported() && !Node::in_dump()) assert(adr_type != NULL, "source must have adr_type");