650 BlockBegin* fsux = NULL; |
650 BlockBegin* fsux = NULL; |
651 if (lss_sux == eql_sux) { cond = If::leq; tsux = lss_sux; fsux = gtr_sux; } |
651 if (lss_sux == eql_sux) { cond = If::leq; tsux = lss_sux; fsux = gtr_sux; } |
652 else if (lss_sux == gtr_sux) { cond = If::neq; tsux = lss_sux; fsux = eql_sux; } |
652 else if (lss_sux == gtr_sux) { cond = If::neq; tsux = lss_sux; fsux = eql_sux; } |
653 else if (eql_sux == gtr_sux) { cond = If::geq; tsux = eql_sux; fsux = lss_sux; } |
653 else if (eql_sux == gtr_sux) { cond = If::geq; tsux = eql_sux; fsux = lss_sux; } |
654 else { ShouldNotReachHere(); } |
654 else { ShouldNotReachHere(); } |
655 If* canon = new If(cmp->x(), cond, nan_sux == tsux, cmp->y(), tsux, fsux, cmp->state_before(), x->is_safepoint()); |
655 If* canon = new If(cmp->x(), cond, nan_sux == tsux, cmp->y(), tsux, fsux, cmp->state_before(), x->is_safepoint()); |
656 if (cmp->x() == cmp->y()) { |
656 if (cmp->x() == cmp->y()) { |
657 do_If(canon); |
657 do_If(canon); |
658 } else { |
658 } else { |
|
659 if (compilation()->profile_branches()) { |
|
660 // TODO: If profiling, leave floating point comparisons unoptimized. |
|
661 // We currently do not support profiling of the unordered case. |
|
662 switch(cmp->op()) { |
|
663 case Bytecodes::_fcmpl: case Bytecodes::_fcmpg: |
|
664 case Bytecodes::_dcmpl: case Bytecodes::_dcmpg: |
|
665 set_canonical(x); |
|
666 return; |
|
667 } |
|
668 } |
659 set_canonical(canon); |
669 set_canonical(canon); |
660 set_bci(cmp->bci()); |
670 set_bci(cmp->bci()); |
661 } |
671 } |
662 } |
672 } |
663 } else if (l->as_InstanceOf() != NULL) { |
673 } else if (l->as_InstanceOf() != NULL) { |
879 void Canonicalizer::do_UnsafeGetObject(UnsafeGetObject* x) {} |
889 void Canonicalizer::do_UnsafeGetObject(UnsafeGetObject* x) {} |
880 void Canonicalizer::do_UnsafePutObject(UnsafePutObject* x) {} |
890 void Canonicalizer::do_UnsafePutObject(UnsafePutObject* x) {} |
881 void Canonicalizer::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {} |
891 void Canonicalizer::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {} |
882 void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {} |
892 void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {} |
883 void Canonicalizer::do_ProfileCall(ProfileCall* x) {} |
893 void Canonicalizer::do_ProfileCall(ProfileCall* x) {} |
884 void Canonicalizer::do_ProfileCounter(ProfileCounter* x) {} |
894 void Canonicalizer::do_ProfileInvoke(ProfileInvoke* x) {} |
|
895 |