comparison src/share/vm/oops/methodData.hpp @ 9760:c76b43ed5089

Added infrastructure for recording invoked methods in the profiling information.
author Christian Haeubl <haeubl@ssw.jku.at>
date Fri, 17 May 2013 15:38:22 +0200
parents 89e4d67fdd2a
children 57e5211846f9
comparison
equal deleted inserted replaced
9759:580faa2ee288 9760:c76b43ed5089
757 virtual bool is_VirtualCallData() { return true; } 757 virtual bool is_VirtualCallData() { return true; }
758 758
759 static int static_cell_count() { 759 static int static_cell_count() {
760 // At this point we could add more profile state, e.g., for arguments. 760 // At this point we could add more profile state, e.g., for arguments.
761 // But for now it's the same size as the base record type. 761 // But for now it's the same size as the base record type.
762 return ReceiverTypeData::static_cell_count(); 762 return ReceiverTypeData::static_cell_count() GRAAL_ONLY(+ (uint) MethodProfileWidth * receiver_type_row_cell_count);
763 } 763 }
764 764
765 virtual int cell_count() { 765 virtual int cell_count() {
766 return static_cell_count(); 766 return static_cell_count();
767 } 767 }
768
769 #ifdef GRAAL
770 static ByteSize method_offset(uint row) {
771 return cell_offset(method_cell_index(row));
772 }
773 static ByteSize method_count_offset(uint row) {
774 return cell_offset(method_count_cell_index(row));
775 }
776 static int method_cell_index(uint row) {
777 return receiver0_offset + (row + TypeProfileWidth) * receiver_type_row_cell_count;
778 }
779 static int method_count_cell_index(uint row) {
780 return count0_offset + (row + TypeProfileWidth) * receiver_type_row_cell_count;
781 }
782 #endif
768 783
769 // Direct accessors 784 // Direct accessors
770 static ByteSize virtual_call_data_size() { 785 static ByteSize virtual_call_data_size() {
771 return cell_offset(static_cell_count()); 786 return cell_offset(static_cell_count());
772 } 787 }