src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/cpu/aarch64/vm

src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp

Print this page




 180   // Just restore result register. Only used by deoptimization. By
 181   // now any callee save register that needs to be restored to a c2
 182   // caller of the deoptee has been extracted into the vframeArray
 183   // and will be stuffed into the c2i adapter we create for later
 184   // restoration so only result registers need to be restored here.
 185 
 186   // Restore fp result register
 187   __ ldrd(v0, Address(sp, v0_offset_in_bytes()));
 188   // Restore integer result register
 189   __ ldr(r0, Address(sp, r0_offset_in_bytes()));
 190 
 191   // Pop all of the register save are off the stack
 192   __ add(sp, sp, round_to(return_offset_in_bytes(), 16));
 193 }
 194 
 195 // Is vector's size (in bytes) bigger than a size saved by default?
 196 // 8 bytes vector registers are saved by default on AArch64.
 197 bool SharedRuntime::is_wide_vector(int size) {
 198   return size > 8;
 199 }










 200 // The java_calling_convention describes stack locations as ideal slots on
 201 // a frame with no abi restrictions. Since we must observe abi restrictions
 202 // (like the placement of the register window) the slots must be biased by
 203 // the following value.
 204 static int reg2offset_in(VMReg r) {
 205   // Account for saved rfp and lr
 206   // This should really be in_preserve_stack_slots
 207   return (r->reg2stack() + 4) * VMRegImpl::stack_slot_size;
 208 }
 209 
 210 static int reg2offset_out(VMReg r) {
 211   return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
 212 }
 213 
 214 template <class T> static const T& min (const T& a, const T& b) {
 215   return (a > b) ? b : a;
 216 }
 217 
 218 // ---------------------------------------------------------------------------
 219 // Read the array of BasicTypes from a signature, and compute where the




 180   // Just restore result register. Only used by deoptimization. By
 181   // now any callee save register that needs to be restored to a c2
 182   // caller of the deoptee has been extracted into the vframeArray
 183   // and will be stuffed into the c2i adapter we create for later
 184   // restoration so only result registers need to be restored here.
 185 
 186   // Restore fp result register
 187   __ ldrd(v0, Address(sp, v0_offset_in_bytes()));
 188   // Restore integer result register
 189   __ ldr(r0, Address(sp, r0_offset_in_bytes()));
 190 
 191   // Pop all of the register save are off the stack
 192   __ add(sp, sp, round_to(return_offset_in_bytes(), 16));
 193 }
 194 
 195 // Is vector's size (in bytes) bigger than a size saved by default?
 196 // 8 bytes vector registers are saved by default on AArch64.
 197 bool SharedRuntime::is_wide_vector(int size) {
 198   return size > 8;
 199 }
 200 
 201 size_t SharedRuntime::trampoline_size() {
 202   return 16;
 203 }
 204 
 205 void SharedRuntime::generate_trampoline(MacroAssembler *masm, address destination) {
 206   __ mov(rscratch1, destination);
 207   __ br(rscratch1);
 208 }
 209 
 210 // The java_calling_convention describes stack locations as ideal slots on
 211 // a frame with no abi restrictions. Since we must observe abi restrictions
 212 // (like the placement of the register window) the slots must be biased by
 213 // the following value.
 214 static int reg2offset_in(VMReg r) {
 215   // Account for saved rfp and lr
 216   // This should really be in_preserve_stack_slots
 217   return (r->reg2stack() + 4) * VMRegImpl::stack_slot_size;
 218 }
 219 
 220 static int reg2offset_out(VMReg r) {
 221   return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
 222 }
 223 
 224 template <class T> static const T& min (const T& a, const T& b) {
 225   return (a > b) ? b : a;
 226 }
 227 
 228 // ---------------------------------------------------------------------------
 229 // Read the array of BasicTypes from a signature, and compute where the


src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File