Mercurial > hg > truffle
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 || |