--- old/src/share/vm/opto/node.cpp 2017-07-10 18:11:48.528468999 +0200 +++ new/src/share/vm/opto/node.cpp 2017-07-10 18:11:43.757490369 +0200 @@ -504,6 +504,9 @@ if (cast != NULL && cast->has_range_check()) { C->add_range_check_cast(cast); } + if (n->is_ValueTypePtr()) { + C->add_value_type_ptr(n->as_ValueTypePtr()); + } n->set_idx(C->next_unique()); // Get new unique index as well debug_only( n->verify_construction() ); @@ -612,6 +615,9 @@ if (cast != NULL && cast->has_range_check()) { compile->remove_range_check_cast(cast); } + if (is_ValueTypePtr()) { + compile->remove_value_type_ptr(as_ValueTypePtr()); + } if (is_SafePoint()) { as_SafePoint()->delete_replaced_nodes(); @@ -1352,6 +1358,9 @@ if (cast != NULL && cast->has_range_check()) { igvn->C->remove_range_check_cast(cast); } + if (dead->is_ValueTypePtr()) { + igvn->C->remove_value_type_ptr(dead->as_ValueTypePtr()); + } igvn->C->record_dead_node(dead->_idx); // Kill all inputs to the dead guy for (uint i=0; i < dead->req(); i++) {