< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

8199604_cardtablemodrefbs_rename

978 // branches as most expensive. the first two have a low as well as a                                                                 
979 // normal cost. huge cost appears to be a way of saying don't do                                                                     
980 // something                                                                                                                         
981 
982 definitions %{                                                                                                                       
983   // The default cost (of a register move instruction).                                                                              
984   int_def INSN_COST            (    100,     100);                                                                                   
985   int_def BRANCH_COST          (    200,     2 * INSN_COST);                                                                         
986   int_def CALL_COST            (    200,     2 * INSN_COST);                                                                         
987   int_def VOLATILE_REF_COST    (   1000,     10 * INSN_COST);                                                                        
988 %}                                                                                                                                   
989 
990 
991 //----------SOURCE BLOCK-------------------------------------------------------                                                      
992 // This is a block of C++ code which provides values, functions, and                                                                 
993 // definitions necessary in the rest of the architecture description                                                                 
994 
995 source_hpp %{                                                                                                                        
996 
997 #include "gc/shared/cardTable.hpp"                                                                                                   
998 #include "gc/shared/cardTableModRefBS.hpp"                                                                                           
999 #include "opto/addnode.hpp"                                                                                                          
1000 
1001 class CallStubImpl {                                                                                                                 
1002 
1003   //--------------------------------------------------------------                                                                   
1004   //---<  Used for optimization in Compile::shorten_branches  >---                                                                   
1005   //--------------------------------------------------------------                                                                   
1006 
1007  public:                                                                                                                             
1008   // Size of call trampoline stub.                                                                                                   
1009   static uint size_call_trampoline() {                                                                                               
1010     return 0; // no call trampolines on this platform                                                                                
1011   }                                                                                                                                  
1012 
1013   // number of relocations needed by a call trampoline stub                                                                          
1014   static uint reloc_call_trampoline() {                                                                                              
1015     return 0; // no call trampolines on this platform                                                                                
1016   }                                                                                                                                  
1017 };                                                                                                                                   

978 // branches as most expensive. the first two have a low as well as a
979 // normal cost. huge cost appears to be a way of saying don't do
980 // something
981 
982 definitions %{
983   // The default cost (of a register move instruction).
984   int_def INSN_COST            (    100,     100);
985   int_def BRANCH_COST          (    200,     2 * INSN_COST);
986   int_def CALL_COST            (    200,     2 * INSN_COST);
987   int_def VOLATILE_REF_COST    (   1000,     10 * INSN_COST);
988 %}
989 
990 
991 //----------SOURCE BLOCK-------------------------------------------------------
992 // This is a block of C++ code which provides values, functions, and
993 // definitions necessary in the rest of the architecture description
994 
995 source_hpp %{
996 
997 #include "gc/shared/cardTable.hpp"
998 #include "gc/shared/cardTableBarrierSet.hpp"
999 #include "opto/addnode.hpp"
1000 
1001 class CallStubImpl {
1002 
1003   //--------------------------------------------------------------
1004   //---<  Used for optimization in Compile::shorten_branches  >---
1005   //--------------------------------------------------------------
1006 
1007  public:
1008   // Size of call trampoline stub.
1009   static uint size_call_trampoline() {
1010     return 0; // no call trampolines on this platform
1011   }
1012 
1013   // number of relocations needed by a call trampoline stub
1014   static uint reloc_call_trampoline() {
1015     return 0; // no call trampolines on this platform
1016   }
1017 };

5827   op_cost(0);                                                                                                                        
5828   format %{ %}                                                                                                                       
5829   interface(CONST_INTER);                                                                                                            
5830 %}                                                                                                                                   
5831 
5832 // Polling Page Pointer Immediate                                                                                                    
5833 operand immPollPage()                                                                                                                
5834 %{                                                                                                                                   
5835   predicate((address)n->get_ptr() == os::get_polling_page());                                                                        
5836   match(ConP);                                                                                                                       
5837 
5838   op_cost(0);                                                                                                                        
5839   format %{ %}                                                                                                                       
5840   interface(CONST_INTER);                                                                                                            
5841 %}                                                                                                                                   
5842 
5843 // Card Table Byte Map Base                                                                                                          
5844 operand immByteMapBase()                                                                                                             
5845 %{                                                                                                                                   
5846   // Get base of card map                                                                                                            
5847   predicate(Universe::heap()->barrier_set()->is_a(BarrierSet::CardTableModRef) &&                                                    
5848             (jbyte*)n->get_ptr() == ((CardTableModRefBS*)(Universe::heap()->barrier_set()))->card_table()->byte_map_base());         
5849   match(ConP);                                                                                                                       
5850 
5851   op_cost(0);                                                                                                                        
5852   format %{ %}                                                                                                                       
5853   interface(CONST_INTER);                                                                                                            
5854 %}                                                                                                                                   
5855 
5856 // Pointer Immediate Minus One                                                                                                       
5857 // this is used when we want to write the current PC to the thread anchor                                                            
5858 operand immP_M1()                                                                                                                    
5859 %{                                                                                                                                   
5860   predicate(n->get_ptr() == -1);                                                                                                     
5861   match(ConP);                                                                                                                       
5862 
5863   op_cost(0);                                                                                                                        
5864   format %{ %}                                                                                                                       
5865   interface(CONST_INTER);                                                                                                            
5866 %}                                                                                                                                   
5867 

5827   op_cost(0);
5828   format %{ %}
5829   interface(CONST_INTER);
5830 %}
5831 
5832 // Polling Page Pointer Immediate
5833 operand immPollPage()
5834 %{
5835   predicate((address)n->get_ptr() == os::get_polling_page());
5836   match(ConP);
5837 
5838   op_cost(0);
5839   format %{ %}
5840   interface(CONST_INTER);
5841 %}
5842 
5843 // Card Table Byte Map Base
5844 operand immByteMapBase()
5845 %{
5846   // Get base of card map
5847   predicate(Universe::heap()->barrier_set()->is_a(BarrierSet::CardTableBarrierSet) &&
5848             (jbyte*)n->get_ptr() == ((CardTableBarrierSet*)(Universe::heap()->barrier_set()))->card_table()->byte_map_base());
5849   match(ConP);
5850 
5851   op_cost(0);
5852   format %{ %}
5853   interface(CONST_INTER);
5854 %}
5855 
5856 // Pointer Immediate Minus One
5857 // this is used when we want to write the current PC to the thread anchor
5858 operand immP_M1()
5859 %{
5860   predicate(n->get_ptr() == -1);
5861   match(ConP);
5862 
5863   op_cost(0);
5864   format %{ %}
5865   interface(CONST_INTER);
5866 %}
5867 
< prev index next >