hotspot/src/cpu/aarch64/vm/templateInterpreterGenerator_aarch64.cpp
changeset 35553 fa41da206b95
parent 35232 76aed99c0ddd
child 35606 d873b64009cc
equal deleted inserted replaced
35552:be1bff8945dc 35553:fa41da206b95
   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));