Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/interp_masm_x86_64.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 | cd3d6a6b95d9 |
children | 836a62f43af9 |
comparison
equal
deleted
inserted
replaced
9759:580faa2ee288 | 9760:c76b43ed5089 |
---|---|
30 #include "interpreter/invocationCounter.hpp" | 30 #include "interpreter/invocationCounter.hpp" |
31 #include "runtime/frame.hpp" | 31 #include "runtime/frame.hpp" |
32 | 32 |
33 // This file specializes the assember with interpreter-specific macros | 33 // This file specializes the assember with interpreter-specific macros |
34 | 34 |
35 typedef ByteSize (*OffsetFunction)(uint); | |
35 | 36 |
36 class InterpreterMacroAssembler: public MacroAssembler { | 37 class InterpreterMacroAssembler: public MacroAssembler { |
37 #ifndef CC_INTERP | 38 #ifndef CC_INTERP |
38 protected: | 39 protected: |
39 // Interpreter specific version of call_VM_base | 40 // Interpreter specific version of call_VM_base |
211 Label& not_equal_continue); | 212 Label& not_equal_continue); |
212 | 213 |
213 void record_klass_in_profile(Register receiver, Register mdp, | 214 void record_klass_in_profile(Register receiver, Register mdp, |
214 Register reg2, bool is_virtual_call); | 215 Register reg2, bool is_virtual_call); |
215 void record_klass_in_profile_helper(Register receiver, Register mdp, | 216 void record_klass_in_profile_helper(Register receiver, Register mdp, |
216 Register reg2, int start_row, | 217 Register reg2, Label& done, bool is_virtual_call); |
217 Label& done, bool is_virtual_call); | 218 void record_item_in_profile_helper(Register item, Register mdp, |
219 Register reg2, int start_row, Label& done, int total_rows, | |
220 OffsetFunction item_offset_fn, OffsetFunction item_count_offset_fn, | |
221 int non_profiled_offset); | |
218 | 222 |
219 void update_mdp_by_offset(Register mdp_in, int offset_of_offset); | 223 void update_mdp_by_offset(Register mdp_in, int offset_of_offset); |
220 void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp); | 224 void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp); |
221 void update_mdp_by_constant(Register mdp_in, int constant); | 225 void update_mdp_by_constant(Register mdp_in, int constant); |
222 void update_mdp_for_ret(Register return_bci); | 226 void update_mdp_for_ret(Register return_bci); |
226 void profile_call(Register mdp); | 230 void profile_call(Register mdp); |
227 void profile_final_call(Register mdp); | 231 void profile_final_call(Register mdp); |
228 void profile_virtual_call(Register receiver, Register mdp, | 232 void profile_virtual_call(Register receiver, Register mdp, |
229 Register scratch2, | 233 Register scratch2, |
230 bool receiver_can_be_null = false); | 234 bool receiver_can_be_null = false); |
235 void profile_called_method(Register method, Register mdp, Register reg2); | |
231 void profile_ret(Register return_bci, Register mdp); | 236 void profile_ret(Register return_bci, Register mdp); |
232 void profile_null_seen(Register mdp); | 237 void profile_null_seen(Register mdp); |
233 void profile_typecheck(Register mdp, Register klass, Register scratch); | 238 void profile_typecheck(Register mdp, Register klass, Register scratch); |
234 void profile_typecheck_failed(Register mdp); | 239 void profile_typecheck_failed(Register mdp); |
235 void profile_switch_default(Register mdp); | 240 void profile_switch_default(Register mdp); |