714 } |
714 } |
715 #endif // INCLUDE_ALL_GCS |
715 #endif // INCLUDE_ALL_GCS |
716 |
716 |
717 // If G1 is not enabled then attempt to go through the accessor entry point |
717 // If G1 is not enabled then attempt to go through the accessor entry point |
718 // Reference.get is an accessor |
718 // Reference.get is an accessor |
719 return generate_accessor_entry(); |
719 return NULL; |
720 } |
720 } |
721 |
721 |
722 /** |
722 /** |
723 * Method entry for static native methods: |
723 * Method entry for static native methods: |
724 * int java.util.zip.CRC32.update(int crc, int b) |
724 * int java.util.zip.CRC32.update(int crc, int b) |
840 void TemplateInterpreterGenerator::bang_stack_shadow_pages(bool native_call) { |
840 void TemplateInterpreterGenerator::bang_stack_shadow_pages(bool native_call) { |
841 // Bang each page in the shadow zone. We can't assume it's been done for |
841 // Bang each page in the shadow zone. We can't assume it's been done for |
842 // an interpreter frame with greater than a page of locals, so each page |
842 // an interpreter frame with greater than a page of locals, so each page |
843 // needs to be checked. Only true for non-native. |
843 // needs to be checked. Only true for non-native. |
844 if (UseStackBanging) { |
844 if (UseStackBanging) { |
845 const int size_t n_shadow_pages = JavaThread::stack_shadow_zone_size() / os::vm_page_size(); |
845 const int n_shadow_pages = JavaThread::stack_shadow_zone_size() / os::vm_page_size(); |
846 const int start_page = native_call ? n_shadow_pages : 1; |
846 const int start_page = native_call ? n_shadow_pages : 1; |
847 const int page_size = os::vm_page_size(); |
847 const int page_size = os::vm_page_size(); |
848 for (int pages = start_page; pages <= n_shadow_pages ; pages++) { |
848 for (int pages = start_page; pages <= n_shadow_pages ; pages++) { |
849 __ sub(rscratch2, sp, pages*page_size); |
849 __ sub(rscratch2, sp, pages*page_size); |
850 __ str(zr, Address(rscratch2)); |
850 __ str(zr, Address(rscratch2)); |
1182 } |
1182 } |
1183 |
1183 |
1184 { |
1184 { |
1185 Label no_reguard; |
1185 Label no_reguard; |
1186 __ lea(rscratch1, Address(rthread, in_bytes(JavaThread::stack_guard_state_offset()))); |
1186 __ lea(rscratch1, Address(rthread, in_bytes(JavaThread::stack_guard_state_offset()))); |
1187 __ ldrb(rscratch1, Address(rscratch1)); |
1187 __ ldrw(rscratch1, Address(rscratch1)); |
1188 __ cmp(rscratch1, JavaThread::stack_guard_yellow_disabled); |
1188 __ cmp(rscratch1, JavaThread::stack_guard_yellow_reserved_disabled); |
1189 __ br(Assembler::NE, no_reguard); |
1189 __ br(Assembler::NE, no_reguard); |
1190 |
1190 |
1191 __ pusha(); // XXX only save smashed registers |
1191 __ pusha(); // XXX only save smashed registers |
1192 __ mov(c_rarg0, rthread); |
1192 __ mov(c_rarg0, rthread); |
1193 __ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)); |
1193 __ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)); |