--- old/src/share/vm/c1/c1_Canonicalizer.cpp 2016-02-25 22:50:45.130287415 +0300 +++ new/src/share/vm/c1/c1_Canonicalizer.cpp 2016-02-25 22:50:45.086287632 +0300 @@ -487,6 +487,17 @@ } break; } + case vmIntrinsics::_isPrimitive : { + assert(x->number_of_arguments() == 1, "wrong type"); + + // Class.isPrimitive is known on constant classes: + InstanceConstant* c = x->argument_at(0)->type()->as_InstanceConstant(); + if (c != NULL && !c->value()->is_null_object()) { + ciType* t = c->value()->as_instance()->java_mirror_type(); + set_constant(t->is_klass() ? 0 : 1); + } + break; + } } }