< prev index next >

src/share/vm/c1/c1_Canonicalizer.cpp

Print this page




 933   if (!match_found) {
 934     *base = root->x();
 935     *index = root->y();
 936     *log2_scale = 0;
 937   }
 938 
 939   // If the value is pinned then it will be always be computed so
 940   // there's no profit to reshaping the expression.
 941   return !root->is_pinned();
 942 }
 943 
 944 
 945 void Canonicalizer::do_UnsafeRawOp(UnsafeRawOp* x) {
 946   Instruction* base = NULL;
 947   Instruction* index = NULL;
 948   int          log2_scale;
 949 
 950   if (match(x, &base, &index, &log2_scale)) {
 951     x->set_base(base);
 952     x->set_index(index);











 953     x->set_log2_scale(log2_scale);
 954     if (PrintUnsafeOptimization) {
 955       tty->print_cr("Canonicalizer: UnsafeRawOp id %d: base = id %d, index = id %d, log2_scale = %d",
 956                     x->id(), x->base()->id(), x->index()->id(), x->log2_scale());
 957     }
 958   }
 959 }
 960 
 961 void Canonicalizer::do_RoundFP(RoundFP* x) {}
 962 void Canonicalizer::do_UnsafeGetRaw(UnsafeGetRaw* x) { if (OptimizeUnsafes) do_UnsafeRawOp(x); }
 963 void Canonicalizer::do_UnsafePutRaw(UnsafePutRaw* x) { if (OptimizeUnsafes) do_UnsafeRawOp(x); }
 964 void Canonicalizer::do_UnsafeGetObject(UnsafeGetObject* x) {}
 965 void Canonicalizer::do_UnsafePutObject(UnsafePutObject* x) {}
 966 void Canonicalizer::do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) {}
 967 void Canonicalizer::do_UnsafePrefetchRead (UnsafePrefetchRead*  x) {}
 968 void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
 969 void Canonicalizer::do_ProfileCall(ProfileCall* x) {}
 970 void Canonicalizer::do_ProfileReturnType(ProfileReturnType* x) {}
 971 void Canonicalizer::do_ProfileInvoke(ProfileInvoke* x) {}
 972 void Canonicalizer::do_RuntimeCall(RuntimeCall* x) {}


 933   if (!match_found) {
 934     *base = root->x();
 935     *index = root->y();
 936     *log2_scale = 0;
 937   }
 938 
 939   // If the value is pinned then it will be always be computed so
 940   // there's no profit to reshaping the expression.
 941   return !root->is_pinned();
 942 }
 943 
 944 
 945 void Canonicalizer::do_UnsafeRawOp(UnsafeRawOp* x) {
 946   Instruction* base = NULL;
 947   Instruction* index = NULL;
 948   int          log2_scale;
 949 
 950   if (match(x, &base, &index, &log2_scale)) {
 951     x->set_base(base);
 952     x->set_index(index);
 953     if (index != NULL) {
 954       // If index is pinned, do not scale again
 955       if (index->is_pinned()) {
 956         log2_scale = 0;
 957       } else {
 958         // If there is a scale, pin the index so it won't be scaled again
 959         if (log2_scale != 0) {
 960           index->pin();
 961         }
 962       } 
 963     }
 964     x->set_log2_scale(log2_scale);
 965     if (PrintUnsafeOptimization) {
 966       tty->print_cr("Canonicalizer: UnsafeRawOp id %d: base = id %d, index = id %d, log2_scale = %d",
 967                     x->id(), x->base()->id(), x->index()->id(), x->log2_scale());
 968     }
 969   }
 970 }
 971 
 972 void Canonicalizer::do_RoundFP(RoundFP* x) {}
 973 void Canonicalizer::do_UnsafeGetRaw(UnsafeGetRaw* x) { if (OptimizeUnsafes) do_UnsafeRawOp(x); }
 974 void Canonicalizer::do_UnsafePutRaw(UnsafePutRaw* x) { if (OptimizeUnsafes) do_UnsafeRawOp(x); }
 975 void Canonicalizer::do_UnsafeGetObject(UnsafeGetObject* x) {}
 976 void Canonicalizer::do_UnsafePutObject(UnsafePutObject* x) {}
 977 void Canonicalizer::do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) {}
 978 void Canonicalizer::do_UnsafePrefetchRead (UnsafePrefetchRead*  x) {}
 979 void Canonicalizer::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
 980 void Canonicalizer::do_ProfileCall(ProfileCall* x) {}
 981 void Canonicalizer::do_ProfileReturnType(ProfileReturnType* x) {}
 982 void Canonicalizer::do_ProfileInvoke(ProfileInvoke* x) {}
 983 void Canonicalizer::do_RuntimeCall(RuntimeCall* x) {}
< prev index next >