--- old/src/share/vm/opto/ifnode.cpp 2016-01-14 16:04:45.046237859 +0100 +++ new/src/share/vm/opto/ifnode.cpp 2016-01-14 16:04:44.978237861 +0100 @@ -1104,7 +1104,8 @@ if (ctrl == fail) { Node* init_n = stack.node_at(1); assert(init_n->Opcode() == Op_ConvI2L, "unexpected first node"); - Node* new_n = igvn->C->conv_I2X_index(igvn, l, array_size); + // Create a new narrow ConvI2L node that is dependent on the range check + Node* new_n = igvn->C->conv_I2X_index(igvn, l, array_size, fail); // The type of the ConvI2L may be widen and so the new // ConvI2L may not be better than an existing ConvI2L