equal
deleted
inserted
replaced
43 # include "thread_solaris.inline.hpp" |
43 # include "thread_solaris.inline.hpp" |
44 #endif |
44 #endif |
45 #ifdef TARGET_OS_FAMILY_windows |
45 #ifdef TARGET_OS_FAMILY_windows |
46 # include "thread_windows.inline.hpp" |
46 # include "thread_windows.inline.hpp" |
47 #endif |
47 #endif |
|
48 #ifdef TARGET_OS_FAMILY_bsd |
|
49 # include "thread_bsd.inline.hpp" |
|
50 #endif |
48 |
51 |
49 |
52 |
50 // Implementation of InterpreterMacroAssembler |
53 // Implementation of InterpreterMacroAssembler |
51 #ifdef CC_INTERP |
54 #ifdef CC_INTERP |
52 void InterpreterMacroAssembler::get_method(Register reg) { |
55 void InterpreterMacroAssembler::get_method(Register reg) { |
1156 |
1159 |
1157 // Fill in the receiver field and increment the count. |
1160 // Fill in the receiver field and increment the count. |
1158 int recvr_offset = in_bytes(VirtualCallData::receiver_offset(start_row)); |
1161 int recvr_offset = in_bytes(VirtualCallData::receiver_offset(start_row)); |
1159 set_mdp_data_at(mdp, recvr_offset, receiver); |
1162 set_mdp_data_at(mdp, recvr_offset, receiver); |
1160 int count_offset = in_bytes(VirtualCallData::receiver_count_offset(start_row)); |
1163 int count_offset = in_bytes(VirtualCallData::receiver_count_offset(start_row)); |
1161 movptr(reg2, (int32_t)DataLayout::counter_increment); |
1164 movptr(reg2, (intptr_t)DataLayout::counter_increment); |
1162 set_mdp_data_at(mdp, count_offset, reg2); |
1165 set_mdp_data_at(mdp, count_offset, reg2); |
1163 if (start_row > 0) { |
1166 if (start_row > 0) { |
1164 jmp(done); |
1167 jmp(done); |
1165 } |
1168 } |
1166 } |
1169 } |
1299 |
1302 |
1300 // If no method data exists, go to profile_continue. |
1303 // If no method data exists, go to profile_continue. |
1301 test_method_data_pointer(mdp, profile_continue); |
1304 test_method_data_pointer(mdp, profile_continue); |
1302 |
1305 |
1303 // Build the base (index * per_case_size_in_bytes()) + case_array_offset_in_bytes() |
1306 // Build the base (index * per_case_size_in_bytes()) + case_array_offset_in_bytes() |
1304 movptr(reg2, (int32_t)in_bytes(MultiBranchData::per_case_size())); |
1307 movptr(reg2, (intptr_t)in_bytes(MultiBranchData::per_case_size())); |
1305 // index is positive and so should have correct value if this code were |
1308 // index is positive and so should have correct value if this code were |
1306 // used on 64bits |
1309 // used on 64bits |
1307 imulptr(index, reg2); |
1310 imulptr(index, reg2); |
1308 addptr(index, in_bytes(MultiBranchData::case_array_offset())); |
1311 addptr(index, in_bytes(MultiBranchData::case_array_offset())); |
1309 |
1312 |