197 // Alignment
198 void align32();
199 void align64();
200 void align(int modulus);
201 void align(int modulus, int target);
202
203 // A 5 byte nop that is safe for patching (see patch_verified_entry)
204 void fat_nop();
205
206 // Stack frame creation/removal
207 void enter();
208 void leave();
209
210 // Support for getting the JavaThread pointer (i.e.; a reference to thread-local information)
211 // The pointer will be loaded into the thread register.
212 void get_thread(Register thread);
213
214 #ifdef _LP64
215 // Support for argument shuffling
216
217 void move32_64(VMRegPair src, VMRegPair dst);
218 void long_move(VMRegPair src, VMRegPair dst);
219 void float_move(VMRegPair src, VMRegPair dst);
220 void double_move(VMRegPair src, VMRegPair dst);
221 void move_ptr(VMRegPair src, VMRegPair dst);
222 void object_move(OopMap* map,
223 int oop_handle_offset,
224 int framesize_in_slots,
225 VMRegPair src,
226 VMRegPair dst,
227 bool is_receiver,
228 int* receiver_offset);
229 #endif // _LP64
230
231 // Support for VM calls
232 //
233 // It is imperative that all calls into the VM are handled via the call_VM macros.
234 // They make sure that the stack linkage is setup correctly. call_VM's correspond
235 // to ENTRY/ENTRY_X entry points while call_VM_leaf's correspond to LEAF entry points.
236
237
238 void call_VM(Register oop_result,
239 address entry_point,
240 bool check_exceptions = true);
|
197 // Alignment
198 void align32();
199 void align64();
200 void align(int modulus);
201 void align(int modulus, int target);
202
203 // A 5 byte nop that is safe for patching (see patch_verified_entry)
204 void fat_nop();
205
206 // Stack frame creation/removal
207 void enter();
208 void leave();
209
210 // Support for getting the JavaThread pointer (i.e.; a reference to thread-local information)
211 // The pointer will be loaded into the thread register.
212 void get_thread(Register thread);
213
214 #ifdef _LP64
215 // Support for argument shuffling
216
217 // bias in bytes
218 void move32_64(VMRegPair src, VMRegPair dst, Register tmp = rax, int in_stk_bias = 0, int out_stk_bias = 0);
219 void long_move(VMRegPair src, VMRegPair dst, Register tmp = rax, int in_stk_bias = 0, int out_stk_bias = 0);
220 void float_move(VMRegPair src, VMRegPair dst, Register tmp = rax, int in_stk_bias = 0, int out_stk_bias = 0);
221 void double_move(VMRegPair src, VMRegPair dst, Register tmp = rax, int in_stk_bias = 0, int out_stk_bias = 0);
222 void move_ptr(VMRegPair src, VMRegPair dst);
223 void object_move(OopMap* map,
224 int oop_handle_offset,
225 int framesize_in_slots,
226 VMRegPair src,
227 VMRegPair dst,
228 bool is_receiver,
229 int* receiver_offset);
230 #endif // _LP64
231
232 // Support for VM calls
233 //
234 // It is imperative that all calls into the VM are handled via the call_VM macros.
235 // They make sure that the stack linkage is setup correctly. call_VM's correspond
236 // to ENTRY/ENTRY_X entry points while call_VM_leaf's correspond to LEAF entry points.
237
238
239 void call_VM(Register oop_result,
240 address entry_point,
241 bool check_exceptions = true);
|