Mercurial > hg > graal-compiler
comparison src/cpu/x86/vm/interp_masm_x86_32.hpp @ 12962:5ccbab1c69f3
8026251: New type profiling points: parameters to methods
Summary: x86 interpreter and c1 type profiling for parameters on method entries
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Tue, 22 Oct 2013 09:51:47 +0200 |
parents | ce0cc25bc5e2 |
children | d3f14809b051 |
comparison
equal
deleted
inserted
replaced
12961:4748b3308cda | 12962:5ccbab1c69f3 |
---|---|
20 * or visit www.oracle.com if you need additional information or have any | 20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. | 21 * questions. |
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #ifndef CPU_X86_VM_INTERP_MASM_X86_32_HPP | |
26 #define CPU_X86_VM_INTERP_MASM_X86_32_HPP | |
27 | |
28 #include "asm/macroAssembler.hpp" | |
29 #include "asm/macroAssembler.inline.hpp" | |
30 #include "interpreter/invocationCounter.hpp" | |
31 #include "runtime/frame.hpp" | |
32 | |
33 // This file specializes the assember with interpreter-specific macros | |
34 | |
35 | |
36 class InterpreterMacroAssembler: public MacroAssembler { | |
37 #ifndef CC_INTERP | 25 #ifndef CC_INTERP |
38 protected: | 26 protected: |
39 // Interpreter specific version of call_VM_base | 27 // Interpreter specific version of call_VM_base |
40 virtual void call_VM_leaf_base( | 28 virtual void call_VM_leaf_base( |
41 address entry_point, | 29 address entry_point, |
57 // base routine for all dispatches | 45 // base routine for all dispatches |
58 void dispatch_base(TosState state, address* table, bool verifyoop = true); | 46 void dispatch_base(TosState state, address* table, bool verifyoop = true); |
59 #endif /* CC_INTERP */ | 47 #endif /* CC_INTERP */ |
60 | 48 |
61 public: | 49 public: |
62 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code) {} | 50 InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code), _locals_register(rdi), _bcp_register(rsi) {} |
63 | 51 |
64 void load_earlyret_value(TosState state); | 52 void load_earlyret_value(TosState state); |
65 | 53 |
66 // Interpreter-specific registers | 54 // Interpreter-specific registers |
67 #ifdef CC_INTERP | 55 #ifdef CC_INTERP |
213 void update_mdp_by_constant(Register mdp_in, int constant); | 201 void update_mdp_by_constant(Register mdp_in, int constant); |
214 void update_mdp_for_ret(Register return_bci); | 202 void update_mdp_for_ret(Register return_bci); |
215 | 203 |
216 void profile_taken_branch(Register mdp, Register bumped_count); | 204 void profile_taken_branch(Register mdp, Register bumped_count); |
217 void profile_not_taken_branch(Register mdp); | 205 void profile_not_taken_branch(Register mdp); |
218 void profile_obj_type(Register obj, const Address& mdo_addr); | |
219 void profile_arguments_type(Register mdp, Register callee, Register tmp, bool is_virtual); | |
220 void profile_return_type(Register mdp, Register ret, Register tmp); | |
221 void profile_call(Register mdp); | 206 void profile_call(Register mdp); |
222 void profile_final_call(Register mdp); | 207 void profile_final_call(Register mdp); |
223 void profile_virtual_call(Register receiver, Register mdp, Register scratch2, | 208 void profile_virtual_call(Register receiver, Register mdp, Register scratch2, |
224 bool receiver_can_be_null = false); | 209 bool receiver_can_be_null = false); |
225 void profile_ret(Register return_bci, Register mdp); | 210 void profile_ret(Register return_bci, Register mdp); |
234 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode; | 219 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode; |
235 | 220 |
236 // support for jvmti | 221 // support for jvmti |
237 void notify_method_entry(); | 222 void notify_method_entry(); |
238 void notify_method_exit(TosState state, NotifyMethodExitMode mode); | 223 void notify_method_exit(TosState state, NotifyMethodExitMode mode); |
239 | |
240 }; | |
241 | |
242 #endif // CPU_X86_VM_INTERP_MASM_X86_32_HPP |