Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 1251:576e77447e3c
6923002: assert(false,"this call site should not be polymorphic")
Summary: Clear the total count when a receiver information is cleared.
Reviewed-by: never, jrose
author | kvn |
---|---|
date | Sun, 07 Feb 2010 12:15:06 -0800 |
parents | 18a389214829 |
children | 7b4415a18c8a |
comparison
equal
deleted
inserted
replaced
1250:3f5b7efb9642 | 1251:576e77447e3c |
---|---|
2728 __ set(mdo_offset_bias, O7); | 2728 __ set(mdo_offset_bias, O7); |
2729 __ add(mdo, O7, mdo); | 2729 __ add(mdo, O7, mdo); |
2730 } | 2730 } |
2731 | 2731 |
2732 Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias); | 2732 Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()) - mdo_offset_bias); |
2733 __ lduw(counter_addr, tmp1); | |
2734 __ add(tmp1, DataLayout::counter_increment, tmp1); | |
2735 __ stw(tmp1, counter_addr); | |
2736 Bytecodes::Code bc = method->java_code_at_bci(bci); | 2733 Bytecodes::Code bc = method->java_code_at_bci(bci); |
2737 // Perform additional virtual call profiling for invokevirtual and | 2734 // Perform additional virtual call profiling for invokevirtual and |
2738 // invokeinterface bytecodes | 2735 // invokeinterface bytecodes |
2739 if ((bc == Bytecodes::_invokevirtual || bc == Bytecodes::_invokeinterface) && | 2736 if ((bc == Bytecodes::_invokevirtual || bc == Bytecodes::_invokeinterface) && |
2740 Tier1ProfileVirtualCalls) { | 2737 Tier1ProfileVirtualCalls) { |
2820 __ delayed()->nop(); | 2817 __ delayed()->nop(); |
2821 __ st_ptr(recv, recv_addr); | 2818 __ st_ptr(recv, recv_addr); |
2822 __ set(DataLayout::counter_increment, tmp1); | 2819 __ set(DataLayout::counter_increment, tmp1); |
2823 __ st_ptr(tmp1, mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) - | 2820 __ st_ptr(tmp1, mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) - |
2824 mdo_offset_bias); | 2821 mdo_offset_bias); |
2825 if (i < (VirtualCallData::row_limit() - 1)) { | 2822 __ br(Assembler::always, false, Assembler::pt, update_done); |
2826 __ br(Assembler::always, false, Assembler::pt, update_done); | 2823 __ delayed()->nop(); |
2827 __ delayed()->nop(); | |
2828 } | |
2829 __ bind(next_test); | 2824 __ bind(next_test); |
2830 } | 2825 } |
2826 // Receiver did not match any saved receiver and there is no empty row for it. | |
2827 // Increment total counter to indicate polymorphic case. | |
2828 __ lduw(counter_addr, tmp1); | |
2829 __ add(tmp1, DataLayout::counter_increment, tmp1); | |
2830 __ stw(tmp1, counter_addr); | |
2831 | 2831 |
2832 __ bind(update_done); | 2832 __ bind(update_done); |
2833 } | 2833 } |
2834 } else { | |
2835 // Static call | |
2836 __ lduw(counter_addr, tmp1); | |
2837 __ add(tmp1, DataLayout::counter_increment, tmp1); | |
2838 __ stw(tmp1, counter_addr); | |
2834 } | 2839 } |
2835 } | 2840 } |
2836 | 2841 |
2837 | 2842 |
2838 void LIR_Assembler::align_backward_branch_target() { | 2843 void LIR_Assembler::align_backward_branch_target() { |