comparison src/share/vm/adlc/formssel.cpp @ 6848:8e47bac5643a

7054512: Compress class pointers after perm gen removal Summary: support of compress class pointers in the compilers. Reviewed-by: kvn, twisti
author roland
date Tue, 09 Oct 2012 10:11:38 +0200
parents 859c45fb8cea
children f6badecb7ea7
comparison
equal deleted inserted replaced
6847:65d07d9ee446 6848:8e47bac5643a
744 744
745 // This instruction captures the machine-independent bottom_type 745 // This instruction captures the machine-independent bottom_type
746 // Expected use is for pointer vs oop determination for LoadP 746 // Expected use is for pointer vs oop determination for LoadP
747 bool InstructForm::captures_bottom_type(FormDict &globals) const { 747 bool InstructForm::captures_bottom_type(FormDict &globals) const {
748 if( _matrule && _matrule->_rChild && 748 if( _matrule && _matrule->_rChild &&
749 (!strcmp(_matrule->_rChild->_opType,"CastPP") || // new result type 749 (!strcmp(_matrule->_rChild->_opType,"CastPP") || // new result type
750 !strcmp(_matrule->_rChild->_opType,"CastX2P") || // new result type 750 !strcmp(_matrule->_rChild->_opType,"CastX2P") || // new result type
751 !strcmp(_matrule->_rChild->_opType,"DecodeN") || 751 !strcmp(_matrule->_rChild->_opType,"DecodeN") ||
752 !strcmp(_matrule->_rChild->_opType,"EncodeP") || 752 !strcmp(_matrule->_rChild->_opType,"EncodeP") ||
753 !strcmp(_matrule->_rChild->_opType,"LoadN") || 753 !strcmp(_matrule->_rChild->_opType,"DecodeNKlass") ||
754 !strcmp(_matrule->_rChild->_opType,"GetAndSetN") || 754 !strcmp(_matrule->_rChild->_opType,"EncodePKlass") ||
755 !strcmp(_matrule->_rChild->_opType,"LoadNKlass") || 755 !strcmp(_matrule->_rChild->_opType,"LoadN") ||
756 !strcmp(_matrule->_rChild->_opType,"CreateEx") || // type of exception 756 !strcmp(_matrule->_rChild->_opType,"GetAndSetN") ||
757 !strcmp(_matrule->_rChild->_opType,"LoadNKlass") ||
758 !strcmp(_matrule->_rChild->_opType,"CreateEx") || // type of exception
757 !strcmp(_matrule->_rChild->_opType,"CheckCastPP")) ) return true; 759 !strcmp(_matrule->_rChild->_opType,"CheckCastPP")) ) return true;
758 else if ( is_ideal_load() == Form::idealP ) return true; 760 else if ( is_ideal_load() == Form::idealP ) return true;
759 else if ( is_ideal_store() != Form::none ) return true; 761 else if ( is_ideal_store() != Form::none ) return true;
760 762
761 if (needs_base_oop_edge(globals)) return true; 763 if (needs_base_oop_edge(globals)) return true;
2450 2452
2451 void OperandForm::format_constant(FILE *fp, uint const_index, uint const_type) { 2453 void OperandForm::format_constant(FILE *fp, uint const_index, uint const_type) {
2452 switch(const_type) { 2454 switch(const_type) {
2453 case Form::idealI: fprintf(fp,"st->print(\"#%%d\", _c%d);\n", const_index); break; 2455 case Form::idealI: fprintf(fp,"st->print(\"#%%d\", _c%d);\n", const_index); break;
2454 case Form::idealP: fprintf(fp,"_c%d->dump_on(st);\n", const_index); break; 2456 case Form::idealP: fprintf(fp,"_c%d->dump_on(st);\n", const_index); break;
2457 case Form::idealNKlass:
2455 case Form::idealN: fprintf(fp,"_c%d->dump_on(st);\n", const_index); break; 2458 case Form::idealN: fprintf(fp,"_c%d->dump_on(st);\n", const_index); break;
2456 case Form::idealL: fprintf(fp,"st->print(\"#%%lld\", _c%d);\n", const_index); break; 2459 case Form::idealL: fprintf(fp,"st->print(\"#%%lld\", _c%d);\n", const_index); break;
2457 case Form::idealF: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break; 2460 case Form::idealF: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break;
2458 case Form::idealD: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break; 2461 case Form::idealD: fprintf(fp,"st->print(\"#%%f\", _c%d);\n", const_index); break;
2459 default: 2462 default:
3388 } 3391 }
3389 } 3392 }
3390 3393
3391 int MatchNode::needs_ideal_memory_edge(FormDict &globals) const { 3394 int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
3392 static const char *needs_ideal_memory_list[] = { 3395 static const char *needs_ideal_memory_list[] = {
3393 "StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" , 3396 "StoreI","StoreL","StoreP","StoreN","StoreNKlass","StoreD","StoreF" ,
3394 "StoreB","StoreC","Store" ,"StoreFP", 3397 "StoreB","StoreC","Store" ,"StoreFP",
3395 "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF" , 3398 "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF" ,
3396 "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load" , 3399 "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load" ,
3397 "StoreVector", "LoadVector", 3400 "StoreVector", "LoadVector",
3398 "LoadRange", "LoadKlass", "LoadNKlass", "LoadL_unaligned", "LoadD_unaligned", 3401 "LoadRange", "LoadKlass", "LoadNKlass", "LoadL_unaligned", "LoadD_unaligned",
3945 strcmp(opType,"ConvL2D")==0 || 3948 strcmp(opType,"ConvL2D")==0 ||
3946 strcmp(opType,"ConvL2F")==0 || 3949 strcmp(opType,"ConvL2F")==0 ||
3947 strcmp(opType,"ConvL2I")==0 || 3950 strcmp(opType,"ConvL2I")==0 ||
3948 strcmp(opType,"DecodeN")==0 || 3951 strcmp(opType,"DecodeN")==0 ||
3949 strcmp(opType,"EncodeP")==0 || 3952 strcmp(opType,"EncodeP")==0 ||
3953 strcmp(opType,"EncodePKlass")==0 ||
3954 strcmp(opType,"DecodeNKlass")==0 ||
3950 strcmp(opType,"RoundDouble")==0 || 3955 strcmp(opType,"RoundDouble")==0 ||
3951 strcmp(opType,"RoundFloat")==0 || 3956 strcmp(opType,"RoundFloat")==0 ||
3952 strcmp(opType,"ReverseBytesI")==0 || 3957 strcmp(opType,"ReverseBytesI")==0 ||
3953 strcmp(opType,"ReverseBytesL")==0 || 3958 strcmp(opType,"ReverseBytesL")==0 ||
3954 strcmp(opType,"ReverseBytesUS")==0 || 3959 strcmp(opType,"ReverseBytesUS")==0 ||