comparison src/cpu/sparc/vm/interp_masm_sparc.hpp @ 10458:63e44cdabb91

fixed SPARC interpreter
author twisti
date Thu, 20 Jun 2013 10:56:34 -0700
parents aeaca88565e6
children d8041d695d19
comparison
equal deleted inserted replaced
10457:fb95519008d6 10458:63e44cdabb91
27 27
28 #include "asm/macroAssembler.inline.hpp" 28 #include "asm/macroAssembler.inline.hpp"
29 #include "interpreter/invocationCounter.hpp" 29 #include "interpreter/invocationCounter.hpp"
30 30
31 // This file specializes the assember with interpreter-specific macros 31 // This file specializes the assember with interpreter-specific macros
32
33 typedef ByteSize (*OffsetFunction)(uint);
32 34
33 REGISTER_DECLARATION( Register, Otos_i , O0); // tos for ints, etc 35 REGISTER_DECLARATION( Register, Otos_i , O0); // tos for ints, etc
34 REGISTER_DECLARATION( Register, Otos_l , O0); // for longs 36 REGISTER_DECLARATION( Register, Otos_l , O0); // for longs
35 REGISTER_DECLARATION( Register, Otos_l1, O0); // for 1st part of longs 37 REGISTER_DECLARATION( Register, Otos_l1, O0); // for 1st part of longs
36 REGISTER_DECLARATION( Register, Otos_l2, O1); // for 2nd part of longs 38 REGISTER_DECLARATION( Register, Otos_l2, O1); // for 2nd part of longs
298 void test_mdp_data_at(int offset, Register value, Label& not_equal_continue, 300 void test_mdp_data_at(int offset, Register value, Label& not_equal_continue,
299 Register scratch); 301 Register scratch);
300 302
301 void record_klass_in_profile(Register receiver, Register scratch, bool is_virtual_call); 303 void record_klass_in_profile(Register receiver, Register scratch, bool is_virtual_call);
302 void record_klass_in_profile_helper(Register receiver, Register scratch, 304 void record_klass_in_profile_helper(Register receiver, Register scratch,
303 int start_row, Label& done, bool is_virtual_call); 305 Label& done, bool is_virtual_call);
306 void record_item_in_profile_helper(Register item,
307 Register scratch, int start_row, Label& done, int total_rows,
308 OffsetFunction item_offset_fn, OffsetFunction item_count_offset_fn,
309 int non_profiled_offset);
304 310
305 void update_mdp_by_offset(int offset_of_disp, Register scratch); 311 void update_mdp_by_offset(int offset_of_disp, Register scratch);
306 void update_mdp_by_offset(Register reg, int offset_of_disp, 312 void update_mdp_by_offset(Register reg, int offset_of_disp,
307 Register scratch); 313 Register scratch);
308 void update_mdp_by_constant(int constant); 314 void update_mdp_by_constant(int constant);
311 void profile_taken_branch(Register scratch, Register bumped_count); 317 void profile_taken_branch(Register scratch, Register bumped_count);
312 void profile_not_taken_branch(Register scratch); 318 void profile_not_taken_branch(Register scratch);
313 void profile_call(Register scratch); 319 void profile_call(Register scratch);
314 void profile_final_call(Register scratch); 320 void profile_final_call(Register scratch);
315 void profile_virtual_call(Register receiver, Register scratch, bool receiver_can_be_null = false); 321 void profile_virtual_call(Register receiver, Register scratch, bool receiver_can_be_null = false);
322 void profile_called_method(Register method, Register scratch);
316 void profile_ret(TosState state, Register return_bci, Register scratch); 323 void profile_ret(TosState state, Register return_bci, Register scratch);
317 void profile_null_seen(Register scratch); 324 void profile_null_seen(Register scratch);
318 void profile_typecheck(Register klass, Register scratch); 325 void profile_typecheck(Register klass, Register scratch);
319 void profile_typecheck_failed(Register scratch); 326 void profile_typecheck_failed(Register scratch);
320 void profile_switch_default(Register scratch); 327 void profile_switch_default(Register scratch);