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
|