comparison src/share/vm/c1/c1_Canonicalizer.cpp @ 1783:d5d065957597

6953144: Tiered compilation Summary: Infrastructure for tiered compilation support (interpreter + c1 + c2) for 32 and 64 bit. Simple tiered policy implementation. Reviewed-by: kvn, never, phh, twisti
author iveresov
date Fri, 03 Sep 2010 17:51:07 -0700
parents b812ff5abc73
children 3a294e483abc
comparison
equal deleted inserted replaced
1782:f353275af40e 1783:d5d065957597
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