--- old/src/share/vm/opto/parse1.cpp 2017-07-06 17:28:55.323289908 +0200 +++ new/src/share/vm/opto/parse1.cpp 2017-07-06 17:28:51.176308528 +0200 @@ -1835,8 +1835,8 @@ PhiNode* phi; if (m->is_Phi() && m->as_Phi()->region() == r) { phi = m->as_Phi(); - } else if (m->is_ValueType() && m->as_ValueType()->has_phi_inputs(r)){ - phi = m->as_ValueType()->get_oop()->as_Phi(); + } else if (m->is_ValueTypeBase() && m->as_ValueTypeBase()->has_phi_inputs(r)){ + phi = m->as_ValueTypeBase()->get_oop()->as_Phi(); } else { phi = NULL; } @@ -1874,13 +1874,13 @@ // It is a bug if we create a phi which sees a garbage value on a live path. // Merging two value types? - assert(phi == NULL || (m->is_ValueType() == n->is_ValueType()), + assert(phi == NULL || (m->is_ValueTypeBase() == n->is_ValueTypeBase()), "value types should only be merged with other value types"); - if (phi != NULL && n->isa_ValueType()) { + if (phi != NULL && n->isa_ValueTypeBase()) { // Reload current state because it may have been updated by ensure_phi m = map()->in(j); - ValueTypeNode* vtm = m->as_ValueType(); // Current value type - ValueTypeNode* vtn = n->as_ValueType(); // Incoming value type + ValueTypeBaseNode* vtm = m->as_ValueTypeBase(); // Current value type + ValueTypeBaseNode* vtn = n->as_ValueTypeBase(); // Incoming value type assert(vtm->get_oop() == phi, "Value type should have Phi input"); if (TraceOptoParse) { #ifdef ASSERT @@ -2125,7 +2125,7 @@ return NULL; } - ValueTypeNode* vt = o->isa_ValueType(); + ValueTypeBaseNode* vt = o->isa_ValueTypeBase(); if (vt != NULL) { // Value types are merged by merging their field values. // Create a cloned ValueTypeNode with phi inputs that