5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 class ciBitData; 26 class ciCounterData; 27 class ciJumpData; 28 class ciReceiverTypeData; 29 class ciRetData; 30 class ciBranchData; 31 class ciArrayData; 32 class ciMultiBranchData; 33 class ciArgInfoData; 34 35 typedef ProfileData ciProfileData; 36 37 class ciBitData : public BitData { 38 public: 39 ciBitData(DataLayout* layout) : BitData(layout) {}; 40 }; 41 42 class ciCounterData : public CounterData { 43 public: 44 ciCounterData(DataLayout* layout) : CounterData(layout) {}; 294 void set_arg_local(int i); 295 void set_arg_stack(int i); 296 void set_arg_returned(int i); 297 void set_arg_modified(int arg, uint val); 298 299 bool is_arg_local(int i) const; 300 bool is_arg_stack(int i) const; 301 bool is_arg_returned(int i) const; 302 uint arg_modified(int arg) const; 303 304 // Code generation helper 305 ByteSize offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data); 306 int byte_offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data) { return in_bytes(offset_of_slot(data, slot_offset_in_data)); } 307 308 #ifndef PRODUCT 309 // printing support for method data 310 void print(); 311 void print_data_on(outputStream* st); 312 #endif 313 }; | 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_CI_CIMETHODDATA_HPP 26 #define SHARE_VM_CI_CIMETHODDATA_HPP 27 28 #include "ci/ciClassList.hpp" 29 #include "ci/ciKlass.hpp" 30 #include "ci/ciObject.hpp" 31 #include "ci/ciUtilities.hpp" 32 #include "oops/methodDataOop.hpp" 33 #include "oops/oop.inline.hpp" 34 35 class ciBitData; 36 class ciCounterData; 37 class ciJumpData; 38 class ciReceiverTypeData; 39 class ciRetData; 40 class ciBranchData; 41 class ciArrayData; 42 class ciMultiBranchData; 43 class ciArgInfoData; 44 45 typedef ProfileData ciProfileData; 46 47 class ciBitData : public BitData { 48 public: 49 ciBitData(DataLayout* layout) : BitData(layout) {}; 50 }; 51 52 class ciCounterData : public CounterData { 53 public: 54 ciCounterData(DataLayout* layout) : CounterData(layout) {}; 304 void set_arg_local(int i); 305 void set_arg_stack(int i); 306 void set_arg_returned(int i); 307 void set_arg_modified(int arg, uint val); 308 309 bool is_arg_local(int i) const; 310 bool is_arg_stack(int i) const; 311 bool is_arg_returned(int i) const; 312 uint arg_modified(int arg) const; 313 314 // Code generation helper 315 ByteSize offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data); 316 int byte_offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data) { return in_bytes(offset_of_slot(data, slot_offset_in_data)); } 317 318 #ifndef PRODUCT 319 // printing support for method data 320 void print(); 321 void print_data_on(outputStream* st); 322 #endif 323 }; 324 325 #endif // SHARE_VM_CI_CIMETHODDATA_HPP |