void Canonicalizer::do_Intrinsic (Intrinsic* x) { switch (x->id()) { case ciMethod::_floatToRawIntBits : { FloatConstant* c = x->argument_at(0)->type()->as_FloatConstant(); if (c != NULL) { JavaValue v; v.set_jfloat(c->value()); set_constant(v.get_jint()); } break; } case ciMethod::_intBitsToFloat : { IntConstant* c = x->argument_at(0)->type()->as_IntConstant(); if (c != NULL) { JavaValue v; v.set_jint(c->value()); set_constant(v.get_jfloat()); } break; } case ciMethod::_doubleToRawLongBits : { DoubleConstant* c = x->argument_at(0)->type()->as_DoubleConstant(); if (c != NULL) { JavaValue v; v.set_jdouble(c->value()); set_constant(v.get_jlong()); } break; } case ciMethod::_longBitsToDouble : { LongConstant* c = x->argument_at(0)->type()->as_LongConstant(); if (c != NULL) { JavaValue v; v.set_jlong(c->value()); set_constant(v.get_jdouble()); } break; } } }